![]() |
Datenaustausch zwischen Main- und Einstellungs-Form
Hi!
Habe ein Hauptformular und ein Formular für diverse Programmeinstellungen. Bisher habe ich alle Einstellungen, die der Benutzer im Einstellungs-Formular vorgenommen hat in einer Ini-Datei gespeichert, auf die das Hauptformular nach Schließen des Einstellungs-Formulars zugegriffen hat. Die Ini-Datei war praktisch der Vermittler für die beiden Formulare. Meine Frage: Wie machen das die Vollprofis (:-D) ... ich mein bei großen Projekten verliert man ja unheimlich schnell die Übersicht bezüglich der Einstellungen :? Vielen Dank :dp: |
Re: Datenaustausch zwischen Main- und Einstellungs-Form
ich mache es so: das unterformular bekommt einen Pointer auf einen Datensatz im Hauptformular.
der typ wird am besten in einer separaten unit deklariert. extra unit:
Delphi-Quellcode:
Hauptformular:
[...]
type TEigenertyp = record s1,s2: string[255]; i,j,k: integer; r: real; end; type PEigenerTyp = ^TEigenerTyp; [...]
Delphi-Quellcode:
uses extraunit; ... var x: TEigenerTyp; ... Aufruf des unterformulars:
Delphi-Quellcode:
und im unterformular:procedure TForm1.Button1Click(sender: TObject); begin unterformular.anzeigen(@x); end;
Delphi-Quellcode:
type TForm2 = class(TForm)
[...] public remote: PEigenerTyp; procedure anzeigen(uebergeben: PEigenerTyp); end; [...] implementation [...] procedure TForm2.anzeigen(uebergeben: PEigenerTyp); begin remote := uebergeben; self.show; end; procedure TForm2.abfragebuttonClick(Sender:TObject); begin // ändern remote^.s1 := prompt(...); end; Edit: verdammt warum kann ich nie was posten ohne danach fehler zu sehen... :drunken: uff so jetzt:: Edit: VERDAMMT. jetzt aber |
Re: Datenaustausch zwischen Main- und Einstellungs-Form
na? frag nur wenn was unklar is :gruebel:
|
Re: Datenaustausch zwischen Main- und Einstellungs-Form
danke! hab dein verfahren grundsätzlich schon ganz gut verstanden, wollte aber die verwendung von zeigern so gut es geht vermeiden :gruebel: vielleicht kommt noch eine andere gute idee, wenn nicht, werde ich dein verfahren nutzen :zwinker:
|
Re: Datenaustausch zwischen Main- und Einstellungs-Form
var a: TTyp; ist eigentlich schon ein pointer
wenn die aufzurufende Prozedur so aussieht
Delphi-Quellcode:
dann wird nur der Pointer übergeben, der programmierer muss aber nicht explizit mit pointern arbeiten
procedure TForm2.anzeigen(var x: TEigenerTyp);
|
Re: Datenaustausch zwischen Main- und Einstellungs-Form
wenn du eine Funktion ohne var-parameter sondern mit konstanten parameter definierst wird zum Aufruf der Prozedur extra speicherplatz reserviert, eine neue instanz des Datensatzes mit den werten des "übergebenen" Datensatzes erzeugt und am Ende der Prozedur wieder freigegeben (gelöscht).
wenn du var-parameter verwendest musst du den Pointer mit ptrvar:= @x; speichern und dann ausserhalb der Prozedur mit ptrvar^ aufrufen. wenn du nur ptrvar vom typ TEigenertyp machst und ptrvar := x dann überträgt Delphi nur die Werte. Wenn du dennoch nur den Pointer übergeben willst musst du assemblern ( was du wohl erst recht nicht willst). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 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