Fórum Alguém pode testar este fragmento de código e me explicar? #254994
18/10/2004
0
procedure TForm1.btnlerClick(Sender: TObject); VAR TEXT: TEXTFILE; VALOR,LOTE,AITTEMP:STRING; I: INTEGER; begin If Filebox.ItemIndex <> -1 then begin i:=0; btnler.Enabled:= false; ASSIGNFILE(TEXT,FILEBOX.FileName); Reset(TEXT); WHILE NOT EOF(TEXT) DO BEGIN READLN(TEXT,VALOR); DTMDB.CDS.Append; DTMDB.CDS.FieldByName(´MUN_AUTUADOR´).ASINTEGER := STRTOINT(COPY(VALOR,1,4)); DTMDB.CDS.FieldByName(´STATUS´).ASSTRING := COPY(VALOR,5,1); DTMDB.CDS.FieldByName(´ITEM´).ASSTRING := COPY(VALOR,6,11); DTMDB.CDS.FieldByName(´PLACA´).ASSTRING := COPY(VALOR,17,7); end; end; DTMDB.CDS.Post; DTMDB.CDS.ApplyUpdates(0); CLOSEFILE(TEXT); //fim do preenchimento SHOWMESSAGE(´PROCESSO CONCLUÍDO!´); end;
estou querendo saber pq no sql server no campo ITEM
aparece por exemplo D450306688 quadrinho no final
e no interbase não!!!
queria saber se tem como evitar isso no interbase..
o txt é o seguinte..
6713FD450306688 DLF1168 6713FD450306689 DLJ2536
minha estrutura de tabela é
Placa varchar(7)
ITEM varchar(11)
Mun_autuador int
Status varchar(1)
obs. já tentei como char e deu a mesma coisa..
quem puder me explicar o pq ficarei mto grato..
Eric
Eric.miranda
Curtir tópico
+ 0Posts
18/10/2004
By_gandalf
Gostei + 0
18/10/2004
Aroldo Zanela
Acho que as substrings estão corretas:
1 2 12345678901234567890123 6713FD450306688 DLF1168 6713FD450306689 DLJ2536 | || | | || 1234567 | |12345678901| | 1| 1 +------ 17,07 Placa 1234|+---------->>>>>>> 6,11 Item | +>>>>>>>>>>>>>>>>>> 5,01 Status ++++>>>>>>>>>>>>>>>>>>> 1,04 Município atuador
Tem como enviar um fragmento do arquivo original para avaliar melhor: aroldo_zanela@hotmail.com (máximo de 1 MB).
Gostei + 0
19/10/2004
Eric.miranda
obrigado pela força..
By_Gandalf,
é justamente isso que estou querendo corrigir..
ele tem que ler 11 pq o tamanho desse campo pode variar..
ele pode ter no máximo 11 e no mínimo 3.. então ele lê os 11 e grava.. os espaços em branco já tentei eliminar com trim mas não deu certo..
Gostei + 0
22/10/2004
Eric.miranda
se alguem puder testar aí pra mim, só pra ver se dá esse quadrado no fim do campo eu ficaria mto grato..
valeu
Eric
Gostei + 0
22/10/2004
Macario
Gostei + 0
22/10/2004
Paulo_amorim
Esse ´quadrado´ se refere a qual caractere? Tente veriifcar para que se tenha uma idéia do que está acontecendo.
POde-se fazer uma verificação para tirar esse caractere também, por exemplo
sVariavel := ´´; for i := 0 to Length(Texto) do if (Texto[i] in [´A..Z´,´a..z´]) then sVariavel := sVariavel + Texto[i];
Ate+
Gostei + 0
22/10/2004
Eric.miranda
Paulo_Amorim,
o caractere a qual me refiro(no caso o quadrado) é como se fosse um terminador..
tipo assim.. se vizualizo o campo normalmente não vejo nada nele..ou seja ele está sem o quadrado.. mas se seleciono o campo ele aparece o quadrado..
outra coisa que percebi. é o seguinte..
se o campo tem tamanho 10 e preencho com 10 ele não aparece esse quadrado.. mas se preencho com 9 ele aparece um quadrado após o ultimo caracter.. e se preencho por exemplo com 6digitos ele põe um quadrado no 7º e o resto fica em branco..
então isso deve ser uma marca .. um terminador sei lá..
o engraçado é que isso não acontece no interbase.. só no sql server..
Macario o Aspone,
qto ao post tb já tentei e não obtive diferença..
abraços
Eric
Gostei + 0
22/10/2004
Adilsond
procedure TForm1.btnlerClick(Sender: TObject); VAR Text: TextFile; Valor: String; begin if Filebox.ItemIndex <> -1 then begin btnLer.Enabled := False; AssignFile(Text,FileBox.FileName); Reset(Text); try while not EOF(Text) do begin Readln(Text,Valor); ShowMessage(´O caracter é o ´ + IntToStr(Ord(Valor[16]))); Break; end; finally CloseFile(Text); end; end; //fim do preenchimento ShowMessage(´PROCESSO CONCLUÍDO!´); end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)