-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
12. Jan 2007
Ja, das sollte eigentlich klappen:
-> -> -> ->
\> -> -/
=> Wenn die Rekursion bei Element angelangt ist passiert folgendes:
^.next^.Parent <>
Jedes Element außer hat ja einen Parent, und wenn ein Element mehr als einen Parent hat, dann wird einfach geprüft, ob das Element und der erste Parent des Nachfolgers gleich sind, wenn das so ist, kann das bedeuten:...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
12. Jan 2007
Ich hab das Problem schon gelöst: Beim Suchen wird geschaut, ob der Erste Vorgänger des Nachfolgers das momentane Element ist, und nur dann wird rekursiv wieder aufgerufen.Ja da hast du wohl recht, doch wenn ich jetzt das Konzept ändere, dann war ja alles für die Katz, außerdem finde ich die Idee, wie ich das gemacht habe gar nicht so schlecht... (hast du auch nicht gesagt) :roteyes:
naja...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
12. Jan 2007
Schon wieder diese Pointer...
Aaaaalso
Ich habe die Einträge in meiner Liste jetzt so arrangiert:
TBauteil = Record
ID: string; // Der einzigartige name jedes Bauteils
Typ: TBauteilTyp; // Der Typ des Bauteils (im moment noch unwichtig)
Ebene: integer; // Die Ebene des Bauteils, also Root Ebene = 0 Nachfolger Ebene = 1 usw
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Dadurch, dass MyResult da nicht drinstand, war natürlich Chaos vorprogrammiert...
Jedenfalls nochmal vielen Dank, ich dachte, du wolltest mir die ganze Zeit sagen, dass durch
MyResult := P
Sich P verändert...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
OOHHH MANNNN ICH BIN SOO BLÖÖÖÖÖDDDDD!!!!!!!
Da muss natürlich MyResult hin! Jetzt klappt das schonmal mit dem Suchen und so! Mannometer ich könnte :wall: ich sitz stunden da dran und dann hab ich nur die Falsche Variable übergeben :kotz:
DANKE DANKE DANKE :love: :love: :love:
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Aber bei P steht KEIN var davor! Wie das mit dem var funktioniert ist mir klar, aber ich verstehe nicht, warum P (ich meine nicht MyResult) geändert wird, wenn ich sage MyResult := P!
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Aber warum ändert sich P, wenn ich nur MyResult ändere? Das will mir irgendwie nicht in den Kopf gehen... :wall:
procedure TBauteilListe.GetPBauteil(ID: string);
procedure Rekursiv(p: PBauteil;const Search: string; var MyResult: PBauteil);
var i: integer;
begin
if p <> nil
then
if p^.ID = Search
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Dein Ausführungen sind zwar schlüssig, aber sie Passen nicht zu meiner Prozedur
procedure TBauteilListe.GetPBauteil(ID: string);
procedure Rekursiv(p: PBauteil; Search: string; var MyResult: PBauteil);
var i: integer;
begin
if p <> nil
then
if p^.ID = Search
then
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Ehrlich gesagt nicht :cry:
procedure TBauteilListe.GetPBauteil(ID: string);
procedure Rekursiv(p: PBauteil; Search: string; var MyResult: PBauteil);
var i: integer;
begin
if p <> nil
then
if p^.ID = Search
then
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Ich habs geändert, immer noch das Gleiche :(
Im Anhang mal der Source.
Ein Bauteil hinzufügen, auf das Bauteil in der Liste Klicken, Es wird eine Message angezeigt, was gefunden wurde 'root', noch ein Bauteil hinzufügen, das oberste anklicken, AV!
Ich weiß nicht mehr weiter...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Ich hab schon wieder ein Problem, das aber nicht mit der Stringlist zusammenhängt, sondern mit Pointern (denke ich)
Ich habe meinen Startpunkt FRoot, dessen Eigenschaften im Create gesetzt werden
constructor TBauteilListe.Create;
begin
inherited create;
FList := TStringlist.Create;
new(FRoot);
FRoot^.ID := 'root';
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Ich habe aus den Funktionen Prozedure gemacht, wie es scheint ist rekursion bei Funktionen nicht immer optimal...
Jedenfalls funktionierts jetzt
Danke für eure Hilfe!
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
function TBauteilListe.GetLines: TStringlist;
procedure Rekursiv(p: PBauteil; var Lst: TStringlist);
var i: integer;
begin
if p <> nil
then
begin
if p^.Next <> nil
then
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Tormentor32,
11. Jan 2007
Hallo DPler!
Ich habe in meinem Programm folgendes vor: Ich will einen Stromkreis darstellen, der auch ineinander verschachtelte Parallel und Reihenschaltungen beimhalten kann, dazu habe ich mir folgendes überlegt:
// Ich habe zunächst meinen Typ TBauteil
type
TBauteil = Record
ID,Parent: string; // Jedes Bauteil hat eine eindeutige ID
Typ: TBauteilTyp;
Next: Array of...