[erledigt]An alle die Delphi können: Eine vekettete Liste von C++ nach Delphi



  • Hio,
    Ist hier ein alter Delphi Veteran der Delphi noch relativ gut kann?^^
    Also folgendes:
    In C++ habe ich eine verkettete Liste geschrieben, die auch wunderbar funzt. Diese muss ich nun in Delphi übertragen, da ich gerade ein Projekt in Delphi schreibe.
    Nun sind meine Delphi Kenntnisse sehr eingerostet und mit Pointer in Delphi habe ich mich nie wirklich beschäftigt, sodass ich das Problem habe, dass meine verkettete Liste nicht ganz Funktioniert.
    Kann mal jemand drüber schauen und sagen was ich da falsch gemacht habe? Kann auch gut sein, dass es einfach ein Denkfehler ist(hab mich lange nicht mehr mit dem Algorithmus selber auseinandergesetzt).

    Hier mal der Code 🙂

    type
      MyOwnList = ^List;
      List = record
        Klasse: integer;
        Name: string;
        next: MyOwnList;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyList: MyOwnList;
    begin
      //ganz viel Code
      New(MyList);
      if (not GetDataValues(Edit1.Text,MyList)) then MessageBox(0,'Datei nicht gefunden!','Fehler',0)
      else PrintList(MyList);
    end;
    
    //soll ne Datei auslesen und entsprechende Werte aus der Datei in die Liste speichern
    function GetDataValues(Path: string; var MyList: MyOwnList):boolean;
    var
      MyFile : TextFile;
      Line: string;
    begin
      if (FileExists(Path)) then
      begin
        AssignFile(MyFile,Path);
        Reset(MyFile);
        while not EoF(MyFile) do
        begin
          Readln(MyFile,Line);
          New(MyList^.next);
          MyList^.next^.Klasse := GetClassForList(Line); //Hier werden die Werte herausgelesen
          MyList^.next^.Name := GetNameForList(Line);
        end;
        MyList^.next^.next := nil;
        CloseFile(MyFile);
        result := true;
      end
      else result := false;
    end;
    
    //Zum Testen alles in einem Memo ausgeben
    procedure PrintList(MyList: MyOwnList);
    var
      temp: MyOwnList;
    begin
      temp := MyList;
      while(temp^.next <> nil) do
      begin
        Form1.Memo1.Text := Form1.Memo1.Text + temp^.Name + '--' + IntToStr(temp^.Klasse);
        Form1.Memo1.Lines.Add('');
        temp := temp^.next;
      end;
    end;
    

    Mein Problem ist nun, dass ich mir nicht sicher bin ob die Liste so richtig Funktiert und ich nicht weiss wie ich "Anfangen" soll. Also wie ich die erste Variable setzte, diese befülle etc.. Den Anfangspunkt muss ich dann wohl über eine "FirstPointInList"-Variable machen.

    Danke

    P.S. Ich würd ja ne List-Komponenten nehmen,aber das geht in diesem Fall nicht, da der Dateiinhalt sortiert werden soll.

    Edit: hat sich erledigt, habs hinbekommen


Anmelden zum Antworten