Hi Leute, ich hoffe ich bin hier im richtigen Forum.
Hoffe doch dass Zeiger zum ObjectPascal gehören.
Also mein Problem konnte Google nicht lösen.
Fast jeder Google-Link ist schon mit lilaner Farbe gekennzeichnet
Dazu kommt noch,dass mein Desktop jetzt mit haufen Beispielen und PDFs zugemüllt ist.
Nur nix davon bringt mich wirklich weiter.
Aber nun genug Offtopic.
Mein Problem ist folgendes:
Ich hab mir einen Zeiger definiert:
Code:
type
PMyelement = ^TMyelement;
TMyelement = record
id: integer;
titel: string;
Next : PMyelement;
Prev : PMyelement;
Dann kommen die globalen Variablen
Code:
var
anf, akt, ende : PMyelement; { ** anf und akt stehen für Anfang und Aktuell ** }
Bis dahin kein Problem.
Jetzt (ich hoffe ich kriegs gut erklärt) möchte ich meinen Quelltext folgdendermaßen schreiben:
Das Einschreiben von Daten funktioniert schon.
Allerdings fügt er neue Elemente immer ganz hinten an.
Sagen wir aber ich befinde mich in der Mitte der Datensätze (die ich mit Hilfe von Vorwärts/Rückwärts-Buttons erreicht habe) und klicke nun auf "Übernehmen".
Dann soll er in dem aktuellen Datensatz nur die Daten "aktualisieren" und nicht hinten erneut speichern.
Anschließend soll er mir den nächsten Datensatz einfach anzeigen lassen.
Ich weiß ja auch warum er die Daten am Ende speichert, aber ich krieg diesen Fehler gedanklich nicht ausgemerzt!
Es fehlt mir irgendwo ne If-Abfrage die überprüft, ob der Zeiger nun am Ende des Datensatzes ist (sprich "nächste Datensatz := NIL")
oder ob da noch Datensätze folgen (sprich "nächste Datensatz <> NIL")
Ich hoffe einfach mal,dass die Beschreibung ausreicht für euch. Wenn es fragen gibt immer her damit!
Hier mein Quelltext zum Eintragen von Daten:
Code:
procedure TForm1.BitBtn3Click(Sender: TObject); // Elemente einschreiben in Liste
var h1, h2 : PMyelement; { ** h1 und h2 sind (H)ilfsvariablen ** }
begin
new(h1);
h1^.id := StrToInt(Edit1.Text) +1;
h1^.titel := Edit2.Text;
Edit1.Text := IntToStr(h1^.id);
h1^.Next := NIL;
if anf = NIL then
begin
anf := h1;
end
else
begin
h2 := anf;
while (h2^.Next <> NIL) do
begin
h2 := h2^.Next;
end;
h2^.Next := h1;
end;
akt := h1;
end;
lg knocko