Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi vorwärts deklaration (https://www.delphipraxis.net/62348-vorwaerts-deklaration.html)

alexkoe 3. Feb 2006 09:35

Delphi-Version: 5.0

vorwärts deklaration
 
hallo
ich habe mich heute mit der vorwärts deklarstion befasst und bin leider nicht so richtig dahinter gestiegen.wie geht das ?
wäre für hinweise sehr dankbar

mfg alex

NicoDE 3. Feb 2006 09:47

Re: vorwärts deklaration
 
Vorwärtsdeklarationen sind nur innerhalb eines Definitionsblocks (type) erlaubt.

Ein Beispiel für Klassen die sich gegenseitig verwenden:
Delphi-Quellcode:
type
  // Deklariere TBar vorwärts, damit er in TFoo verwendet werden kann
  TBar = class;

  // Deklariere TFoo (verwendet TBar)
  TFoo = class
  private
    FBar: TBar;
  public
    property Bar: TBar read FBar;
  end;

  // Deklariere TBar (verwendet TFoo)
  TBar = class
  private
    FFoo: TFoo;
  public
    property Foo: TFoo read FFoo;
  end;
Ein Beispiel für Strukturen die sich gegenseitig verwenden:
Delphi-Quellcode:
type
  // Deklariere Zeiger auf TBar, damit er in TFoo verwendet werden kann
  PBar = ^TBar;

  // Deklariere TFoo (verwendet PBar)
  PFoo = ^TFoo;
  TFoo = record
    Bar: PBar;
  end;

  // Deklariere TBar (verwendet PFoo)
  TBar = record
    Foo: PFoo;
  end;

Grishnak 3. Feb 2006 09:51

Re: vorwärts deklaration
 
ebenfalls möglich: zwei Prozeduren/Funktionen rufen sich gegenseitig auf:

Delphi-Quellcode:
implementation

function Funk(x: integer): integer; forward;

procedure Proz(v: double);
begin
  [...]
  a:=Funk(5);
  [...]
end;

function Funk(x: integer): integer;
begin
  [...]
  Proz(3.14);
  [...]
end;

alexkoe 3. Feb 2006 10:09

Re: vorwärts deklaration
 
ja aber ich ahb folgendes problem:
ich möchte, sobald ich ein programm starte, daten in eine combobox laden, ohne einen button dafür drücken zu müssen.mir wurde gesagt dass das mit der vorwärts deklaration gehen sollte.ich habs aber wie schon gesagt nicht hin bekommen.

mfg alex

Grishnak 3. Feb 2006 10:14

Re: vorwärts deklaration
 
Eine (Vorwärts-)Deklaration ist doch keine Ausführung von kompiliertem Code!

Zu deinem Problem würde ich einfach das OnCreate-Event der Form benutzen!

alexkoe 3. Feb 2006 10:24

Re: vorwärts deklaration
 
ich hab nur grundkenntnisse da ich nur den grundkurs informatik an einem gymnasium besuche.
was ist dieser "onCreate-event" und wie funktuioniert dieser?
mfg alex

jmd anders 3. Feb 2006 10:53

Re: vorwärts deklaration
 
wenn du im objektinspektor statt eigentschaften oben die spalte events anklickst, dann kannst du die ganzen ereignissse sehen auf die dein form reagieren kann.
dabei ist auch das Oncreate ereignis, welches beim start aufgerufen wird. da einfach mit doppelklick draufklicken und dann wird schon eine procedure erstellt in der du dann entsprechend deine funktion einfügen kannst. ziemlich einfach eigentlich, dürfte also nichts schief gehen.

des weiteren kannst du aber auch einen initialization nutzen.
Delphi-Quellcode:
initialization

LadeDatenausDB();

end.
dieser teil wird beim laden dieser unit ausgeführt.

Khabarakh 3. Feb 2006 11:31

Re: vorwärts deklaration
 
Zitat:

Zitat von jmd anders
des weiteren kannst du aber auch einen initialization nutzen.
Delphi-Quellcode:
initialization

LadeDatenausDB();

end.
dieser teil wird beim laden dieser unit ausgeführt.

Wie willst du im initialization-Abschnitt auf die Form zugreifen?

DP-Maintenance 3. Feb 2006 11:38

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Object-Pascal / Delphi-Language" verschoben.
In die Code-Library kommen nur fertige Code-Snippets, keine Fragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 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