將一行TXT檔的資料切成數個欄位的問題 |
答題得分者是:cmf
|
johnnychang
一般會員 發表:24 回覆:26 積分:16 註冊:2002-09-27 發送簡訊給我 |
想將TXT檔內固定長度的每一行資料讀入之後, 切成數個固定長度的欄位. 我用下列的方式: procedure TOpenFile.TransferData();
Type
TDataRecord=record
field01: String[2];
field02: String[3];
field03: String[11];
end;
PTDataRecord=^TDataRecord;
var
InputData: TStringList;
ReadRecord: TDataRecord;
TotalRec,iIndex: longint;
DataRecord:String;
P:Pointer;
PD:PTDataRecord;
begin
P:=@DataRecord;
PD:=PTDataRecord(P);
ReadRecord:=PD^;
Try
InputData:=TStringList.Create;
InputData.LoadFromFile('Test.txt');
TotalRec:=InputData.Count; For iIndex:=0 to TotalRec-1 do
begin
If InputData.Strings[iIndex]<>'' then
begin
DataRecord:=InputData.Strings[iIndex];
end;
Canvas.TextOut(ReadRecord.Field01,ReadRecord.Field02,ReadRecord.Field03);
end;
InputData.Free;
except
MessageBeep(MB_ICONHAND);
Application.MessageBox('檔案開啟失敗!','開檔失敗',MB_OK MB_ICONHAND);
end;
end; 現在的問題是ReadRecord無法準確對應到DataRecord, 請前輩們看看哪裡錯了? 要如何修正? 或是有其他更好的方式? 謝謝!
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
Type
TDataRecord=record
case integer of
0: (
field01: array[0..1] of char;
field02: array[0..1] of char;
field03: array[0..10] of char;
)
1:
(
Buf:array[0..14] of char;
) end;
PTDataRecord=^TDataRecord; procedure TOpenFile.TransferData();
var
InputData : TStringList;
ReadRecord : TDataRecord;
TotalRec,iIndex: longint;
x,y:integer;
begin Try
InputData:=TStringList.Create;
InputData.LoadFromFile('Test.txt');
TotalRec:=InputData.Count; For iIndex:=0 to TotalRec-1 do
begin
If InputData.Strings[iIndex]<>'' then
begin
ReadRecord.Buf:=Copy(Pchar(InputData.Strings[iIndex]),1,15);
x:=StrToint(ReadRecord.Field01+#0);
y:=StrToint(ReadRecord.Field02+#0);
Canvas.TextOut(x,y,ReadRecord.Field03);
end;
end;
InputData.Free;
except
MessageBeep(MB_ICONHAND);
Application.MessageBox('檔案開啟失敗!','開檔失敗',MB_OK+MB_ICONHAND);
end;
end;
------
︿︿ |
johnnychang
一般會員 發表:24 回覆:26 積分:16 註冊:2002-09-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |