안녕하세요.
혼자 해결하기 어려워서 이곳에 문의 드립니다
여러 고수님의 도움 바랍니다.
다름이 아니고 Text파일을 읽어서 StringGrid의 셀에 분리해서 넣으려 합니다.
Text파일의 각 항목들은 '|'로 구분되어 있는 거구요.
그런데 이것을 한 라인단위로 읽어서 1바이트씩 배열에 넣으려 하니깐 안돼요.
너무 허술해서 보여주기 창피하지만 몇일 고생하고나니 이젠 부끄러움도 몰겠네요.
// 이하는 저의 소스입니다.//
procedure Test.OpenBtnClick(Sender: TObject);
var
TempArray : array[1..1000] of char;
TempSave, fname, InString : String;
TempField : char;
InFile : TextFile;
LenString, RowCnt, C, R, i, j : integer;
begin
If OpenDialog1.Execute then
begin
fname := OpenDialog1.FileName;
AssignFile(InFile, fname);
Reset(InFile);
While not EOF(InFile) do
begin
RowCnt := RowCnt + 1; //텍스트파일의 행수를 발췌
readln(InFile);
end;
CloseFile(InFile);
SG1.RowCount := RowCnt;
Reset(InFile);
While not EOF(InFile) do
begin
R := R + 1;
read(InFile, TempSave);
LenString := Length(TempSave); //행의 길이를 얻기
for i := 1 to LenString do
begin
TempArray[i] := copy(TempSave, i, 1); //이부분에서 자꾸 에러나요!!!
end;
for j := 1 to LenString do
begin
if TempArray[j] = '|'
then
SG1.Cells[C, R] := TempField;
TempField := '';
C := C + 1;
else
TempField := TempField + TempArray[j];
end;
end;
readln(InFile); //다음행으로 커서를 옮기자
end;
end;
end;
에러메세지 - [Error] DM1.pas(363): Incompatible types: 'Char' and 'String'
대체 뭘 어떻게 해야 이 문제를 해결할 수 있을까요?
이렇게 해보시져!
var
f:textfile;
buffers,str:string;
cnt,col,ps:word;
StrList: TStringList;
LineCount: Integer;
begin
StrList := TStringList.Create;
StrList.LoadFromFile('c:test.txt');
LineCount := StrList.Count; //텍스트파일의 라인수를 구한다.
StrList.Free;
assignfile(f,'c:test.txt');
reset(f);
stringgrid1.rowcount:= LineCount;
col:=0;
while not eof(f) do begin
readln(f,buffers); //한줄을 읽어서
inc(col);
str:=buffers;
cnt:=0;
while str<>'' do begin // 문자열이 빌때까지 계속하라.
ps:=pos('|',str); //구분자의 위치를 알아낸후
stringgrid1.cells[cnt,col]:=copy(str,1,ps-1); // 구분자 이전까지 잘라 넣고
str:=copy(str,ps+1,length(str)); //원래의 스트링을 구분자까지 잘라낸다.
inc(cnt);
end;
end;
end;
바라미~~