Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode (17) :: Comparando Implementações do Desafio "Letter Combinations of a Phone Number" em Harbour e TOTVS TLPP

_Créditos das imagens: ChatGPT_ # LeetCode (17) :: Comparando Implementações do Desafio "Letter Combinations of a Phone Number" em Harbour e TOTVS TLPP O desafio [**"Letter Combinations of a Phone Number"**](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) (Combinações de Letras de um Número de Telefone) é um problema clássico de programação que envolve a geração de todas as combinações possíveis de letras que um número de telefone pode representar, com base no mapeamento tradicional dos teclados de telefone. Abaixo, comparamos duas implementações desse desafio: uma em **Harbour** e outra em **TOTVS TLPP** (TOTVS Language Plus Plus). ## O Desafio Dada uma string contendo dígitos de 2 a 9, retorne todas as combinações possíveis de letras que esses dígitos podem representar. O mapeamento dos dígitos para as letras é o mesmo dos teclados de telefone tradicionais: - 2: "abc" - 3: "def" - 4: "ghi" - 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