Post by Gio » 15 Aug 2022, 19:07
Eu costumo fazer assim para organizar arquivos desse tipo:
Supondo que um arquivo contenha 1 registro por linha, e que cada registro seja composto de 13 campos separados por pipes, temos:
Code: Select all
Text =
(
|0110|C230412153|1-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|1-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0990|C230412153|2-JOAO FRANCISCO|1059|0|66205041473|2|2507508|0|2-AVENIDA CABO AMARELO|1|2|CABO AMARELO|
|0999|C230412153|3-JOSE SILVA|1060|0|66205041474|3|2507509|0|3-AVENIDA CABO PRETO|1|2|CABO PRETO|
)
; Uso um stringsplit para separar o texto em linhas. Cada linha contém 1 registro.
StringSplit, REGISTRO_, Text, `n
;Uso um loop sobre o total de registros (o totalizador é sempre o item 0 da array que o stringsplit criou) para separar cada registro em campos. Cada registro contém 13 campos.
Loop % REGISTRO_0
{
; Uso as duas linhas abaixo para remover os pipes iniciais e finais de cada registro (para que a separação não comece e nem termine com um campo vazio).
StringTrimRight, REGISTRO_%A_INDEX%, REGISTRO_%A_INDEX%, 1
StringTrimLeft, REGISTRO_%A_INDEX%, REGISTRO_%A_INDEX%, 1
; Já a linha abaixo serve para separar o conteúdo de cada registro em seus campos...
StringSplit, REGISTRO_%A_INDEX%_CAMPO_, REGISTRO_%A_Index%, |
}
; A partir daqui tudo fica indexado de forma bem organizada...
;Campo 3 do registro 1:
msgbox % REGISTRO_1_CAMPO_3
; Campo 10 do registro 2:
msgbox % REGISTRO_2_CAMPO_10
; Campo 1 do registro 3:
msgbox % REGISTRO_3_CAMPO_1
Eu costumo fazer assim para organizar arquivos desse tipo:
Supondo que um arquivo contenha 1 registro por linha, e que cada registro seja composto de 13 campos separados por pipes, temos:
[code]Text =
(
|0110|C230412153|1-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|1-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0990|C230412153|2-JOAO FRANCISCO|1059|0|66205041473|2|2507508|0|2-AVENIDA CABO AMARELO|1|2|CABO AMARELO|
|0999|C230412153|3-JOSE SILVA|1060|0|66205041474|3|2507509|0|3-AVENIDA CABO PRETO|1|2|CABO PRETO|
)
; Uso um stringsplit para separar o texto em linhas. Cada linha contém 1 registro.
StringSplit, REGISTRO_, Text, `n
;Uso um loop sobre o total de registros (o totalizador é sempre o item 0 da array que o stringsplit criou) para separar cada registro em campos. Cada registro contém 13 campos.
Loop % REGISTRO_0
{
; Uso as duas linhas abaixo para remover os pipes iniciais e finais de cada registro (para que a separação não comece e nem termine com um campo vazio).
StringTrimRight, REGISTRO_%A_INDEX%, REGISTRO_%A_INDEX%, 1
StringTrimLeft, REGISTRO_%A_INDEX%, REGISTRO_%A_INDEX%, 1
; Já a linha abaixo serve para separar o conteúdo de cada registro em seus campos...
StringSplit, REGISTRO_%A_INDEX%_CAMPO_, REGISTRO_%A_Index%, |
}
; A partir daqui tudo fica indexado de forma bem organizada...
;Campo 3 do registro 1:
msgbox % REGISTRO_1_CAMPO_3
; Campo 10 do registro 2:
msgbox % REGISTRO_2_CAMPO_10
; Campo 1 do registro 3:
msgbox % REGISTRO_3_CAMPO_1[/code]