Einzelnen Beitrag anzeigen

Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#1

overload procedure macht probleme

  Alt 13. Okt 2010, 16:50
Delphi-Version: 2010
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
  Mit Zitat antworten Zitat