Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

BlackTDN :: Atualização de Dicionários e Tabelas de Dados ~ Versão Final

004

Em BlackTDN :: Atualização de Dicionários e Tabelas de Dados  apresentamos a versão BlackTDN para Update de Dicionário de Dados e Tabelas.

Apresentamos, agora, a versão “Final” com suporte a Update de Help de Campos e de Perguntas. Recomendo atualizar e, antes de utilizar, testar exaustivamente.

A idéia é efetuar o Update Baseado nos arquivos dos Dicionários e Helps e de acordo com a configuração definida no arquivo .ini

image

Com as novas implementações, a configuração do arquivo ini ficará da seguinte forma:

Modelo de Configuração do arquivo .INI para a rotina de Update.

[GENERAL]
adbConfig=SIX,SX1,SX2,SX3,SX6,SX7,SX9,SXA,SXB,SXG,SXM,SXO
adbTables=SX5
nApplyUpdate=1
aHelpSourceFiles=\ndj_upd\sigahlp.hlp,\ndj_upd\sigahle.hle,\ndj_upd\sigahls.hls
aHelpTargetFiles=sigahlp.hlp,sigahle.hle,sigahls.hls
nHelpForceUpd=0

[SX5]
bdbSourceName={||"\ndj_upd\sx5esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx5"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__cRDD}
cIndexKey=X5_FILIAL+X5_TABELA+X5_CHAVE
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SIX]
bdbSourceName={||"\ndj_upd\sixesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"six"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=INDICE+ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SX1]
bdbSourceName={||"\ndj_upd\sx1esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx1"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X1_GRUPO+X1_ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=X1_HELP
cHelpFieldPropri=
bHelpChange={||.T.}

[SX2]
bdbSourceName={||"\ndj_upd\sx2esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx2"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X2_CHAVE
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SX3]
bdbSourceName={||"\ndj_upd\sx3esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx3"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X3_ARQUIVO+X3_CAMPO
cIndexCond=
bEvalCond={||.T.}
cFieldDefUpdTable=X3_ARQUIVO;Obrigatorio para o SX3
aFieldsNotChange=
nSoftSeek=0
cHelpField=X3_CAMPO
cHelpFieldPropri=X3_PROPRI
bHelpChange={||X3_PROPRI=="U"}

[SX6]
bdbSourceName={||"\ndj_upd\sx6esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx6"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X6_FIL+X6_VAR
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=X6_CONTEUD,X6_CONTSPA,X6_CONTENG
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SX7]
bdbSourceName={||"\ndj_upd\sx7esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx7"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X7_CAMPO+X7_SEQUENC
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SX9]
bdbSourceName={||"\ndj_upd\sx9esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx9"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X9_DOM+X9_CDOM+X9_EXPDOM+X9_EXPCDOM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=1;Obrigatorio para SX9
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SXA]
bdbSourceName={||"\ndj_upd\sxaesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxa"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XA_ALIAS+XA_ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SXB]
bdbSourceName={||"\ndj_upd\sxbesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxb"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SXG]
bdbSourceName={||"\ndj_upd\sxgesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxg"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XG_GRUPO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SXM]
bdbSourceName={||"\ndj_upd\sxmesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxm"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XM_FILIAL+XM_CODIGO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

[SXO]
bdbSourceName={||"\ndj_upd\sxoesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxo"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XO_ALIAS+XO_CAMPO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0
cHelpField=
cHelpFieldPropri=
bHelpChange={||.F.}

Obs.: Vale lembrar que qualquer rotina que altera estrutura de dados deve ser EXAUSTIVAMENTE testada antes de posta em prática.

[]s

иαldσ dj

Comentários

Postagens mais visitadas