Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur-Deklaration (https://www.delphipraxis.net/36393-prozedur-deklaration.html)

Hansa 19. Dez 2004 14:41


Prozedur-Deklaration
 
Ich habe hier eine Prozedur. Die ist im private-Abschnitt einer Form deklariert. Kommt der Compiler an die Stelle, wo sie dann auch im Source komplett steht, dann gehts nicht mehr weiter : "Deklaration von PROZEDUR unterscheidet sich von vorheriger Deklaration".

Aber sie wurde vorher gar nicht deklariert. Nun habe ich mit grep sämtliche Quelltexte durchsucht, auch DFM und finde einfach nichts. Build nützt auch nichts.

fkerber 19. Dez 2004 14:44

Re: Prozedur-Deklaration
 
Hi!

Normalerweise kommt das, wenn sie (jetzt auf dein Beispiel bezogen) im private-Bereich anders aussieht als im Programm selber.
Zeige doch mal die Deklarationen.


Ciao Frederic

Die Muhkuh 19. Dez 2004 14:44

Re: Prozedur-Deklaration
 
Wenn sie im Private Abschnitt steht hast du sie ja deklariert.


Delphi-Quellcode:
private
  procedure Test(S: String);
end;

...

procedure Test(S: String);
begin
  // Tu was
end;

{ So gehts! }

{ So nicht: }
private
  procedure Test(S: String);
end;

...

procedure Test(aS: String);
begin
  // Tu was
end;
Die Proceduren müssen im interface und im implementations abschnitt genau gleich heißen.

Dax 19. Dez 2004 14:47

Re: Prozedur-Deklaration
 
So sollte es auf jeden Fall funktionieren ;)
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    procedure Test(S: String);
  end;

...

procedure TForm1.Test(S: String);
begin
  // Tu was
end;

Hansa 19. Dez 2004 14:53

Re: Prozedur-Deklaration
 
Die Prozedur habe ich mehrmals mit C+P in die TForm-Deklaration kopiert. Genau so, wie sie auch im Implementation-Teil steht. In dem bleibt dann trotzdem der Compiler hängen. Tippfehler sind also auszuschließen. Wo ist die "vorherige Deklaration" ???

Der einzige Hinweis wäre noch, daß der Prozedurname irgendwann geändert wurde. Aber das ist wohl normal. Deshalb auch das Build, obwohl ich am Systemdatum nichts geändert habe.

fkerber 19. Dez 2004 14:57

Re: Prozedur-Deklaration
 
Hi!

Die *.dcu mal gelöscht?
Kannst du die Unit mal anhängen?


Ciao Frederic

Hansa 19. Dez 2004 15:10

Re: Prozedur-Deklaration
 
Warum soll ich denn die DCUs löschen ? :shock: Ach so, ihr wisst nichts mit Build anzufangen ? Das ist in der deutschen Version "Projekt erzeugen". Da ich aber auch des öfteren den DCC32 mit /B Option brauche, behalte ich mir eher das englische Wort dafür. Wer trotzdem nicht weiß, was das soll : ein Build erzeugt alle DCUs eines Projektes neu, so daß der Linker unabhängig vom Datum alles neu einbindet. Das ist besser, als die DCUs zu löschen, denn wenn eine in einem anderen Ordner liegt, so wird sie mitgelinkt, obwohl sie älter ist, als die anderen. Soviel am Rande. 8)

Die Prozedur habe ich jetzt mal komplett gelöscht und lege sie neu an.


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