Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datenaustausch zwischen Main- und Einstellungs-Form (https://www.delphipraxis.net/19841-datenaustausch-zwischen-main-und-einstellungs-form.html)

Wheelie 9. Apr 2004 21:40


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:

hboy 9. Apr 2004 22:02

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:
[...]

type TEigenertyp = record
  s1,s2: string[255];
  i,j,k: integer;
  r: real;
end;

type PEigenerTyp = ^TEigenerTyp;

[...]
Hauptformular:

Delphi-Quellcode:

uses extraunit;


...
var
  x: TEigenerTyp;
 
...

Aufruf des unterformulars:

Delphi-Quellcode:

procedure TForm1.Button1Click(sender: TObject);
begin
  unterformular.anzeigen(@x);
end;
und im unterformular:

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

hboy 9. Apr 2004 22:10

Re: Datenaustausch zwischen Main- und Einstellungs-Form
 
na? frag nur wenn was unklar is :gruebel:

Wheelie 9. Apr 2004 22:16

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:

hboy 9. Apr 2004 22:21

Re: Datenaustausch zwischen Main- und Einstellungs-Form
 
var a: TTyp; ist eigentlich schon ein pointer

wenn die aufzurufende Prozedur so aussieht

Delphi-Quellcode:
procedure TForm2.anzeigen(var x: TEigenerTyp);
dann wird nur der Pointer übergeben, der programmierer muss aber nicht explizit mit pointern arbeiten

hboy 9. Apr 2004 22:28

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