AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datenaustausch zwischen Main- und Einstellungs-Form
Thema durchsuchen
Ansicht
Themen-Optionen

Datenaustausch zwischen Main- und Einstellungs-Form

Ein Thema von Wheelie · begonnen am 9. Apr 2004 · letzter Beitrag vom 9. Apr 2004
Antwort Antwort
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#1

Datenaustausch zwischen Main- und Einstellungs-Form

  Alt 9. Apr 2004, 21:40
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 () ... ich mein bei großen Projekten verliert man ja unheimlich schnell die Übersicht bezüglich der Einstellungen

Vielen Dank
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#2

Re: Datenaustausch zwischen Main- und Einstellungs-Form

  Alt 9. Apr 2004, 22:02
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... uff so jetzt::
Edit: VERDAMMT. jetzt aber
Power is nothing without TControl
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#3

Re: Datenaustausch zwischen Main- und Einstellungs-Form

  Alt 9. Apr 2004, 22:10
na? frag nur wenn was unklar is
Power is nothing without TControl
  Mit Zitat antworten Zitat
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#4

Re: Datenaustausch zwischen Main- und Einstellungs-Form

  Alt 9. Apr 2004, 22:16
danke! hab dein verfahren grundsätzlich schon ganz gut verstanden, wollte aber die verwendung von zeigern so gut es geht vermeiden vielleicht kommt noch eine andere gute idee, wenn nicht, werde ich dein verfahren nutzen
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#5

Re: Datenaustausch zwischen Main- und Einstellungs-Form

  Alt 9. Apr 2004, 22:21
var a: TTyp; ist eigentlich schon ein pointer

wenn die aufzurufende Prozedur so aussieht

procedure TForm2.anzeigen(var x: TEigenerTyp); dann wird nur der Pointer übergeben, der programmierer muss aber nicht explizit mit pointern arbeiten
Power is nothing without TControl
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#6

Re: Datenaustausch zwischen Main- und Einstellungs-Form

  Alt 9. Apr 2004, 22:28
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).
Power is nothing without TControl
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 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