Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Records und Unterprogramme (https://www.delphipraxis.net/96731-records-und-unterprogramme.html)

Teilzeitberlinerin 30. Jul 2007 09:00


Records und Unterprogramme
 
Hallo,

ich bin gerade dabei eine Belegarbeit zu schreiben und bin da auf ein Problem gestoßen. Zum besseren Verständnis werde ich einmal kurz erläutern, was ich machen möchte.

Es soll ein Programm werden, wo ein beliebiger Nutzer eine Personendatei anlegen kann. Das ganze soll im Hintergrund in einem Binärbaum gespeichert werden und da es ja bekanntlich auch Personen mit identischen Nachnamen gibt,soll jeder Knoten eine einfach verkettete Liste beinhalten, worin die Personen gespeichert sind. Dies zu programmieren ist nicht mein Problem und ich möchte drauf hinweisen, dass ich KEINEN Quelltext vorgesetzt bekommen möchte.

Das ganze Programm muss mind. 1 Unterprogramm besitzen (und globale Variablen sind nicht erlaubt).
Ich habe bisher ein Hauptprogramm und wollte dann je ein Unterprogramm für den Baum und die Liste machen, beide werden dann über "uses" miteinander verknüpft. An der Uni habe ich gelernt, die Liste als Record zu definieren. Dies wollte ich auch für den Baum so machen. Zunächst hatte ich beide Records jeweils in der dazugehörigen Unit, aber geht das überhaupt so ? Ich mein, müsste die Baum-Record nicht im Hauptprogramm sein, denn dort rufe ich ja Prozeduren auf, die sich in der Baum-Unit befinde.

Ein anderes Problem welches ich habe ist folgendes. Im Baum-Record muss ich ja dann auch auf eine Liste verweisen, die ja aber in einer anderen Unit ist. Wie mache ich das ? Gibt es dafür eine bestimmte Schreibweise (spitze Klammer, o.ä.) ?


Ich danke euch für eure Hilfe,

Teizeitberlinerin :spin:

Phoenix 30. Jul 2007 09:06

Re: Records und Unterprogramme
 
Ich würde die Records in einer Unit definieren, die ausschliesslich diese Records beinhaltet, und diese Unit dann vom Hauptprogramm und den anderen Units aus einfach einbinden.

Deshalb ja auch 'Uses' - Klauseln: Alle Teile benutzen diese Struktur, also gehört sie in eine eigene benutzte Unit.

Das ist auch die Antwort auf Deine zweite Frage: Einfach die verwendete Unit in die Uses-Klausel aufnehmen, und Du kannst alles was im 'Interface' - Teil der benutzen Unit deklariert ist auch benutzen, als wenn es in der eigenen Unit wäre.

Teilzeitberlinerin 30. Jul 2007 10:24

Re: Records und Unterprogramme
 
Danke für die schnelle Hilfe !

Hab es gleich umgesetzt und ich muss sagen, so lässt sich das ganze wesentlich einfacher programmieren. Dankeschön.

Leider haben sich dabei neue "Probleme" aufgetan.
1. Ich habe folgenden Programmcode

Ausgabe.SAusgabe.Cells[4,1] := IntToStr(hilf^.nummer);

und erstaunlicherweise gibt es einen Compilerfehler, dass 'IntToStr' ein nichtdeklarierter Bezeichner ist. Woran liegt das ? nummer ist als String definiert.


LG Teilzeitberlinerin :spin:

Muetze1 30. Jul 2007 19:05

Re: Records und Unterprogramme
 
Binde die Unit ein, welche IntToStr() beinhaltet. Dafür am einfachsten mal den Cursor auf IntToStr() setzen und F1 drücken. Dann bekommst du die Hilfe zu der Funktion und mit Angabe in welcher Unit diese deklariert ist (SysUtils). Diese dann einfach in der Uses Liste einbinden. Da du die Funktion nur in der Implementierung brauchst und niemals im Interface-Abschnitt, kannst du die Unit gleich in der Uses Liste im Implementation-Teil einbinden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz