Gute Tag,
Und zwar folgendes. Ich habe 2 proceduren die eine Datei Laden.
Die erste ist dazu da, um die Datei mit einem TOpenDialog auszuwählen.
Die zweite ist zum öffnen der Datei mittels eines übergebenen Pfades.
Delphi-Quellcode:
procedure TMap.LoadMap;
var OpenDlg: TOpenDialog;
listFields: TStringList;
i,k,c: integer;
begin
OpenDlg := FormMain.dlgOpen;
if OpenDlg.Execute then
begin
listFields := TStringList.Create;
try
listFields.LoadFromFile(OpenDlg.FileName);
c := 0;
for i := 0 to High(Playground) do
for k := 0 to High(Playground[i]) do
begin
Playground[i][k].Free;
Playground[i][k] := nil;
Playground[i][k] := TField.Create(TFieldKinds(StrToInt(listFields.Strings[c][1])),i,k);
case TFieldKinds(StrToInt(listFields.Strings[c][1])) of
fkENTRANCE: listEntrances.Add(Playground[i][k]);
fkEXIT: listExits.Add(Playground[i][k]);
end;
if (listFields.Strings[c][2] = '-') then
Playground[i][k].nextField := TNextField(StrToInt('-' +listFields.Strings[c][3]))
else
Playground[i][k].nextField := TNextField(StrToInt(listFields.Strings[c][2]));
Inc(c);
end;
finally
listFields.Free;
end;
end;
end;
Delphi-Quellcode:
procedure TMap.LoadMap(fileName: string);
var
listFields: TStringList;
i,k,c: integer;
begin
listFields := TStringList.Create;
try
listFields.LoadFromFile('maps\' +filename +'.map');
c := 0;
for i := 0 to High(Playground) do
for k := 0 to High(Playground[i]) do
begin
Playground[i][k].Free;
Playground[i][k] := nil;
Playground[i][k] := TField.Create(
TFieldKinds(StrToInt(listFields.Strings[c][1]))
,i,k);
case TFieldKinds(StrToInt(listFields.Strings[c][1])) of
fkENTRANCE: listEntrances.Add(Playground[i][k]);
fkEXIT: listExits.Add(Playground[i][k]);
end;
if (listFields.Strings[c][2] = '-') then
Playground[i][k].nextField := TNextField(StrToInt('-' +listFields.Strings[c][3]))
else
Playground[i][k].nextField := TNextField(StrToInt(listFields.Strings[c][2]));
inc(c);
end;
finally
listFields.Free;
end;
Draw(false);
end;
Wenn ich zuerst
map.LoadMap(cbMaps.Items.Strings[cbMaps.ItemIndex]); // übergibt Dateinamen
aufrufe, klappt alles. Ich kann dannach auch die andere prozedure über
map.LoadMap;
aufrufen. Klappt auch.
Doch wenn ich zuerst
map.LoadMap;
und dannach
map.LoadMap(cbMaps.Items.Strings[cbMaps.ItemIndex]); // übergibt Dateinamen
aufrufe wirft er eine EFOpenError
Exception.
Als Pfad gibt er mir 'C:\ .. \maps\maps\foo.map' an. Diese Datei existiert dort auch nicht.
Aber warum hängt er ein 2. 'maps\' dran?
Für eure Hilfe bin ich Dankbar
Gruß Marc | pustekuchen