![]() |
Re: Problem mit einer Stringlist und Pointern
ok anders,
folgender Code:
Delphi-Quellcode:
p ist an der Stelle 5. Das liegt an diesem "var" vor dem x in der Prozedurendeklaration.
procedure dummy(var x:integer);
begin x:=5; end; procedure testdummy; var p:integer; begin p:=3; dummy(p); //Na? Welchen Wert hat p an dieser Stelle? end; Soweit klar? |
Re: Problem mit einer Stringlist und Pointern
Zitat:
|
Re: Problem mit einer Stringlist und Pointern
Doch, doch, doch, doch! :duck: :spin:
p ist der dritte parameter. Also wird er zu MyResult im zweiten aufruf. In diesem zweiten Aufruf wird myresult geändert, damit wird p geändert, wenn die Funktion aus Rekursiv (2. Ebene) wieder zurückspringt nach Rekursiv1 geh nochmal gedanklich, dass durch, was ich dir in Post #19 geschrieben habe. |
Re: Problem mit einer Stringlist und Pointern
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: |
Re: Problem mit einer Stringlist und Pointern
Und ich hab einfach nicht kapiert, was du mit dieser funktion willst. Aber jetzt sieht es schon etwas klarer aus.
|
Re: Problem mit einer Stringlist und Pointern
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... |
Re: Problem mit einer Stringlist und Pointern
Schon wieder diese Pointer...
Aaaaalso Ich habe die Einträge in meiner Liste jetzt so arrangiert:
Delphi-Quellcode:
Da ich mit meiner Liste einen Stromkreis darstellen möchte, habe ich mir Überlegt, dass sich Parallel und Reihenschaltungen ja auch verschachteln können z.B:
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 Parent,Next: Array of PBauteil // Die direkten nachfolgenden und vorherigen Elemente end;
Code:
In diesem Fall wird aber durchs rekursive Auflisten (logischerweise, ergeht ja alle einträge durch, folgendes Angezeigt[root] ---> [root_child1] ---> [root_child1_child1] ---> [root_child1_child1_child1] \--> [root_child1_child2] --/ Zitat:
Wie kann ich das umgehen? Die Zweite Sache ist, wenn ich den Speicherplatz beim beenden rekursiv freigebe, dann kommts auch zu einem Problem, denn:
Code:
Wie kann ich das verhindern?
[s][root] ---> [root_child1] ---> [root_child1_child1] ---> [root_child1_child1_child1][/s]
[s] \--> [root_child1_child2] --/[/s] [s][root] ---> [root_child1] ---> [root_child1_child1] ---> nil[/s] [s] \--> [root_child1_child2] [color=#ff0000][b]--/[/b][/color] // der Zeigt dahin, wo nichts ist und es kracht, wenn er versucht auf dieses Element zuzugreifen, er weiß ja nicht, das es das Element nicht mehr gibt [/s] Und nochwas? Wäre es sinnvoller, statt Parent: Array of string; lieber Parent: Array of PBauteil; zu nehmen? EDIT: hat sich erldedigt, nur noch das Erste Vielen Dank schonmal für die Hilfe! Richard |
Re: Problem mit einer Stringlist und Pointern
:warn: Man sollte halt immer vor dem Programmieren über das Konzept nachdenken. Aber ich programmiere auch häufig nur drauf los. Grade, wenn man nur etwas üben oder lernen möchte. Und wenn man eben nur lernt, sich vorher ein vollständiges Konzept zu erarbeiten. :coder2: :roteyes:
Mit deinem Programmaufbau fällt mir auf Anhieb nicht viel ein. Du könntest einfach im nachhinein Duplikate löschen. Weis nicht ob das dir ausreicht. Oder du machst es so wie in PSpice (und wahrscheinlich an allen anderen Netzberechnungsprogrammen auch): Da hat jedes Element 4 ( oder 3) Kenngrößen: 1. Was ist es (Widerstand, Quelle, Spule) 2. welche Größe hat es (10V, 2ohm); wobei die Einheit anhand der Art des Elementes zu erkennen ist 3.1. Wo beginnt es 3.2. Wo endet es zu3) Dabei beziehst du dich immer auf Netzknotenpunkte, die du einfach durchnummerierst Ich hab irgendwo (noch in Turbo Pascal 6.0) ein Programm geschrieben, was einfache Pspice-Dateien einlesen konnte und berechnen konnte. Die Dateien hatten etwa folgenden Inhalt:
Das konnte man dann ganz einfach in die Netzberechnungsgleichungen (bzw. Matrix) schreiben. |
Re: Problem mit einer Stringlist und Pointern
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.
Zitat:
naja jedenfalls Danke für die (nicht) Hilfe (diesmal habichs allein hingekriegt! :bounce2: ) Richard |
Re: Problem mit einer Stringlist und Pointern
:gruebel: Bist du sicher, dass das klappt. Was ist, wenn das Netz hinter [root_child1_child2] nicht gleich wieder zusammengeht, sondern erst noch ein paar andere Elemnte kommen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz