Q&A

  • Text를 DB화 할때...
안녕하십니까..!!어느덧 크리스마스도 지나고 올한해도 몇일 안남은거 같습니다..!!

모든분들 새해에도..항상좋은 일만 있기를 기원합니다..!!



본론으로 들어가겠습니다..!!^^



다름이 아니오라..전에도 여차 질문을 드렸던 델파이 초보입니다..!!^^

Text 에 있는 내용을 파라독스 DB로 저장시키는 내용중에 하나입니다..!!

DB화 시키는데는 성공을 했습니다..!!

근데..맨 마지막 필드에는 데이타 값이 저장이 안되더라구요..!!

많은 고민을 해보았지만..잘 안되더라구요..!!

내용은 아래와 같습니다..!! 함 보시고 무엇때문인지 고수님들의 지적 바라겠습니다..!!^^

데이타 내용...!!

-----------------------------------------------

A B C D

1111 22222 33333 44444

aaaa bbbbb ccccc ddddd --> 예를 들어

-------------------------------------------------



소스 내용...

----------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);

var

f : TextFile;

s, s1, s2, s3 : String;

Str_len, Pos1_len, Pos2_len, Pos3_len, Pos4_len, i : Integer;

begin

OpenDialog1.Execute;

if OpenDialog1.FileName <> '' then

begin

Assignfile(F, OpenDialog1.FileName);

reset(F);





while Not eof(F) do

begin

readln(F,S);

Table1.Append;

Table1.Edit;



Str_len := length(S);

Pos1_len := Pos(' ', S)-1;



S1 := Copy(S, Pos1_len+2, Str_len);

Pos2_len := Pos(' ', Copy(S1, 0, Str_len))-1;



S2 := Copy(S1, Pos2_len+2, Str_len);

Pos3_len := Pos(' ', Copy(S2, 0, Str_len))-1;



S3 := Copy(S2,Pos3_len+2,Str_len);

Pos4_len := Pos(' ', Copy(S3, 0, Str_len))-1;





Table1.FieldByName('a').asString := Copy(S , 0, Pos1_len);

Table1.FieldByName('b').asString := Copy(S1, 0, Pos2_len);

Table1.FieldbyName('c').asString := Copy(S2, 0, Pos3_len);

Table1.FieldByName('d').AsString := Copy(S3, 0, Pos4_len);

Table1.Post;

Table1.Next;

end;

closefile(F);

end;

end;

---------------------------------------------------------------------------------

필드 A,B,C 까지는 정상적으로 이상이 없이 저장이 되는데..필드 D에는 아무값도

확인할수 가 없더군요(빈칸)..!! 제가 볼때는 이상이 없는거 같은데...!!

고수님의 의견 기다리겠습니다..!!

2  COMMENTS
  • Profile
    홍성락 2001.12.26 21:33
    Commom wrote:

    > 안녕하십니까..!!어느덧 크리스마스도 지나고 올한해도 몇일 안남은거 같습니다..!!

    > 모든분들 새해에도..항상좋은 일만 있기를 기원합니다..!!

    >

    > 본론으로 들어가겠습니다..!!^^

    >

    > 다름이 아니오라..전에도 여차 질문을 드렸던 델파이 초보입니다..!!^^

    > Text 에 있는 내용을 파라독스 DB로 저장시키는 내용중에 하나입니다..!!

    > DB화 시키는데는 성공을 했습니다..!!

    > 근데..맨 마지막 필드에는 데이타 값이 저장이 안되더라구요..!!

    > 많은 고민을 해보았지만..잘 안되더라구요..!!

    > 내용은 아래와 같습니다..!! 함 보시고 무엇때문인지 고수님들의 지적 바라겠습니다..!!^^

    > 데이타 내용...!!

    > -----------------------------------------------

    > A B C D

    > 1111 22222 33333 44444

    > aaaa bbbbb ccccc ddddd --> 예를 들어

    > -------------------------------------------------

    >

    > 소스 내용...

    > ----------------------------------------------------------------------------------

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > f : TextFile;

    > s, s1, s2, s3 : String;

    > Str_len, Pos1_len, Pos2_len, Pos3_len, Pos4_len, i : Integer;

    > begin

    > OpenDialog1.Execute;

    > if OpenDialog1.FileName <> '' then

    > begin

    > Assignfile(F, OpenDialog1.FileName);

    > reset(F);

    >

    >

    > while Not eof(F) do

    > begin

    > readln(F,S);

    > Table1.Append;

    > Table1.Edit;

    >

    > Str_len := length(S);

    > Pos1_len := Pos(' ', S)-1;

    >

    > S1 := Copy(S, Pos1_len+2, Str_len);

    > Pos2_len := Pos(' ', Copy(S1, 0, Str_len))-1;

    >

    > S2 := Copy(S1, Pos2_len+2, Str_len);

    > Pos3_len := Pos(' ', Copy(S2, 0, Str_len))-1;

    >

    > S3 := Copy(S2,Pos3_len+2,Str_len);

    > Pos4_len := Pos(' ', Copy(S3, 0, Str_len))-1;

    >

    >

    > Table1.FieldByName('a').asString := Copy(S , 0, Pos1_len);

    > Table1.FieldByName('b').asString := Copy(S1, 0, Pos2_len);

    > Table1.FieldbyName('c').asString := Copy(S2, 0, Pos3_len);

    > Table1.FieldByName('d').AsString := Copy(S3, 0, Pos4_len);

    > Table1.Post;

    > Table1.Next;

    > end;

    > closefile(F);

    > end;

    > end;

    > ---------------------------------------------------------------------------------

    > 필드 A,B,C 까지는 정상적으로 이상이 없이 저장이 되는데..필드 D에는 아무값도

    > 확인할수 가 없더군요(빈칸)..!! 제가 볼때는 이상이 없는거 같은데...!!

    > 고수님의 의견 기다리겠습니다..!!

    ///////////////////////////////////////////////////////////////////

    Pos4_len를 구하지 못하는것 같은데요.

    문자 S를 구할때 구문은 스페이스로 나눈것 같은데요

    마지막 S3뒤에는 스페이스가 없어서 Pos4_len를 구하지못하는것 같습니다.

    데이타 뒤에 스페이스가 있는지 없는지 구분하여야할것같습니다

    1.방법 그냥

    Table1.FieldByName('d').AsString := S3;

    2.Pos4_len확인

    if Pos4_len <= 0 then Pos4_len := length(s3);

    Table1.FieldByName('d').AsString := Copy(S3, 0, Pos4_len);



  • Profile
    Commom 2001.12.26 23:58
    > > 필드 A,B,C 까지는 정상적으로 이상이 없이 저장이 되는데..필드 D에는 아무값도

    > > 확인할수 가 없더군요(빈칸)..!! 제가 볼때는 이상이 없는거 같은데...!!

    > > 고수님의 의견 기다리겠습니다..!!

    > ///////////////////////////////////////////////////////////////////

    > Pos4_len를 구하지 못하는것 같은데요.

    > 문자 S를 구할때 구문은 스페이스로 나눈것 같은데요

    > 마지막 S3뒤에는 스페이스가 없어서 Pos4_len를 구하지못하는것 같습니다.

    > 데이타 뒤에 스페이스가 있는지 없는지 구분하여야할것같습니다

    > 1.방법 그냥

    > Table1.FieldByName('d').AsString := S3;

    > 2.Pos4_len확인

    > if Pos4_len <= 0 then Pos4_len := length(s3);

    > Table1.FieldByName('d').AsString := Copy(S3, 0, Pos4_len);

    --------------------------------------------------------------------------------->

    감사합니다..!! 제가 마지막 처리를 잘못했군요...!!

    새해복 많이 받으세요..!!