Koden åbner en tekst fil, hvor hver linie består af tre tal adskilt af et mellemrum. Hvert tal kolonne smides i hvert sit array.
Indholdet i tekstfil kunne være:
532275.0 6178625.0 90.8
532300.0 6178625.0 91.0
532325.0 6178625.0 91.1
532350.0 6178625.0 91.3
Koden:
procedure TForm1.Button1Click(Sender: TObject);
function GetToken(var aStr : String; const Delimiter : Char = #32) : Double;
var
i : integer;
begin
i := pos(Delimiter, aStr);
if i = 0 then
Result := StrToFloat(aStr)
else
Result := StrToFloat(copy(aStr, 1, i-1));
Delete(aStr, 1, i);
end;
var
i, iNumPoints: integer;
StringList: TStringList;
dX,dY,dZ: array of double;
str: string;
begin
StringList := TStringList.Create;
StringList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'XYZ.TXT');
iNumPoints := StringList.Count;
SetLength(dX, iNumPoints);
SetLength(dY, iNumPoints);
SetLength(dZ, iNumPoints);
for i := 0 to iNumPoints -1 do
begin
str := StringList[i];
try
dX[i] := GetToken(str);
dY[i] := GetToken(str);
dZ[i] := GetToken(str);
except
On E: EConvertError do
ShowMessage('Invalid point file..')
end;
end;
// dummy code
for i := 0 to iNumPoints -1 do
begin
Button1.Caption := FloatToStr(dX[i]);
end;
end;
Har lagt en errorhandler ind i forhold til første kommentar. Den bliver kun aktiveret i XP, i W2K ingen poroblemer ? Koden stammer fra et tidligere spørgsmål:
http://www.eksperten.dk/spm/244229