Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FormCreate -> Systemfehler 87 - Flascher Parameter (https://www.delphipraxis.net/25803-formcreate-systemfehler-87-flascher-parameter.html)

Zerolith 12. Jul 2004 21:20


FormCreate -> Systemfehler 87 - Flascher Parameter
 
Hallo!

also diese Fehlermeldung treibt mich echt in den Wahnsinn...
kennt irgendjemand dieses Problem?

Der witz ist ja - es tritt bei "nur" bei Windows 2000 auf. Ich hab zuhause was entwickelt (XP) und wollte das programm in der Schule nutzen (Win2000).

Hab meine eigene Formularklasse dafür genommen.

Also mal kurz ein paar auszüge:

Delphi-Quellcode:
//Form:
TZForm = Class(TForm);
...
// Deklaration
constructor Create(AOwner : TComponent) : override;
...
//eigtl. Constructor:
begin
  inherited Create(AOwner);
{ Hier kommt die fehlermeldung... irritierend ist nur - ich habe einen Breakpoint in TCustomForm.Create gemacht und dort kommt er garnicht hin }
...
// Aufruf
TForm4 := TForm4.Create(SELF);
Form4.Showmodal;
Ich check nichtmal wirklich die fehlermeldung... Unter XP klappts einwandfrei...

hoffe ihr könnt mir weiterhelfen.

mfg
Daniel

TStringlist 12. Jul 2004 21:35

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
irgendwie vermisse ich noch einen solchen Aufruf:

ZForm1 := TZForm.Create(self)

edit[x^y]: ... da die Fehlermeldung aber DA DORT BEI "Hier kommt..." kommt, war's wohl nur ein Verschreiber deinerseits. Habe mich jetzt selbst etwas vom Breakpoint in TCustomForm.Create (zu dem du nicht hinkommst) irritieren lassen.

Zerolith 12. Jul 2004 23:25

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
ehm ja - dein post verwirrt mich noch zunehmendst :-)

hab ich mich verschrieben?

also die reihenfolge im Source hier ist nicht entscheident... hab nur kurz die knackpunkte abgetippt...

hmm... sonst weiß von den Freaks (entschuldigt den ausdruck) hier niemand was?

das kann doch nicht sein dass ich unter Win2000 keine Formular Createn kann odeR?

danke nochmals,
Daniel

Nightshade 13. Jul 2004 00:03

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
Zitat:

Zitat von Zerolith
Delphi-Quellcode:
// Aufruf
TForm4 := TForm4.Create(SELF); // <<- Fehler
Form4.Showmodal;

Das "T" stört mich ein bisschen...

Delphi-Quellcode:
// Aufruf
Form4 := TForm4.Create(SELF);
Form4.Showmodal;
Versuchs mal so.

TStringlist 13. Jul 2004 03:06

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
@Zerolith

nur noch mal kurz zur Erläuterung meiner Annahme, du hättest dich verschrieben: Da die fragliche Fehlermeldung ja in deinem Constructor (beim 'inherited') stattfindet, ist also nur dessen Aufruf interessant. Und da der ja bekanntlicherweise Klassenreferenziert zu sein hat, muss der dementsprechend dann auch in etwa so aussehen wie ich in meinem ersten Post schrieb. Ein TForm4.Create (+ dem Parameter dazu) spielt hier in dieser Sache also überhaupt keine Rolle. Eventuell hast du ja die Instanz dieser deiner eigenen Formularklasse 'Form4' genannt, aber der Aufruf des Constructors (dieser deiner eigenen Formklasse) hat immer so auszusehen: TZForm.Create(Self) o. event. auch mal: TZForm.Create(NIL) :chat: :chat: :chat:

Also statt:

Form4 := TForm4.Create(SELF);

hättest es mindestens so lauten müssen:

Form4 := TZForm.Create(SELF);

oder gemäß den allgemeinen Regeln solche Instanzen dann zu benennen:

ZForm1 := TZForm.Create(Self);

...und von daher bleibt da einfach irgendwie nichts anderes übrig, als ein diesbezügliches Verschreiben deinerseits. :-D

Zerolith 13. Jul 2004 11:02

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
Hallo,

also das mit dem TForm4 := TForm4.Create... war ein Tippfehler meinerseits.. hab das ganze hier nur ausm Kopf getippt.

es steht schon Form4 := TForm4.Create drin.

@TStringlist: also eh wieso auch:

ich hab ein Zweites Formualr erstellt - und hab manuell oben Geändert: TForm4 = class(TForm) in TForm4= class(TZForm)

das passt schon - müsste / und geht unter XP ja auch

das mit dem "Nil" werd ich testen

Danke

TStringlist 13. Jul 2004 19:27

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
Also imo geht so ein einfaches manuelles Ändern bzw. Austauschen von TForm4 durch dein TZForm eigentlich nicht! Und wozu sollte das auch gut sein??? In jedem Falle sieht so etwas aber ziemlich fehlerträchtig aus! Und zwar z.B. auch schon deswegen, weil ja mit jeder Ableitung eines Formulars (das später auch mal durch ein solches TXYFormZ.Create(bla) erzeugbar sein soll) auch ein dazu individueller Resorce-File verknüpft ist (im Unterschied zur Ableitung von nur Komponenten). D.h. also, als du die TForm4-Klasse ursprünglich aus TForm erstellt hast entstand ein Resource-File der ja intern event. durchaus auch irgendwie wieder auf TForm Bezug nehmen könnte. Wenn du da nachher aber nur manuell dein TZForm darüberschreibst, entstände dazu immerhin ein widersprüchliche Information (und ob der Resource-File bei jeder Kompilierung immer wieder gänzlichst neu aufgebaut wird? Hmm..). Kommt es nachher zur Ausführung der inherited-Anweisung, dann versuchen die Innereien dieser Anweisung also unter Verwendung der Resourcedatei und mittels einiger Api-Funktionen, mit denen hierfür dann auf das System zugegriffen wird, diese Form zu erstellen. Und sollten dann darüber irgendwelche von einander abweichende Informationen vorliegen (also bzgl. der Abstammung und damit auch bzgl. der Resourcedatei z.B.), könnten das diese Api-Funktionen dann in ihren Parameterlisten wiederspiegeln müssen ...mit dem Ergebnis, dass das System dann selbst wieder damit nichts mehr richtiges anfangen kann und dementsprechend reklamiert: --> Systemfehler 87 - Falscher Parameter. :spin2:


...das nur mal so als eine dafür event.:gruebel: theoretisch mögliche Erklärung.


PS. Aber warum überschreibst du da überhaupt dieses 'TForm' manuell mit deinem TZForm? Wozu soll das gut sein :?: Wenn du eine weitere Ableitung deiner eigenen Formularklasse möchtest, würde ich die alte Klasse lieber duplizieren, sie dann umbenennen und anschließend entsprechend modifizieren. Massenweise eigene Formular-Ableitungen haben doch quasi nur von TForm ausgehend Sinn.

PPS. (nur weil ich gerade Zeit hatte, bzw. selbst auf irgendwelche Antworten warte...)

Zerolith 13. Jul 2004 20:05

Re: FormCreate -> Systemfehler 87 - Flascher Parameter
 
wow... eh ja *G*

wollte bloß anmerken dass ich meinem Win2K Prob auf die Schliche gekommen bin.

ich habe eine Funktion genommen die einen Schatten zeichnet - diese schickt eine Api Message an das Formular - jene wird allerdings nur von WinXP unterstütz.

sorry - aber da der Debugger nie bis dahin gekommen ist bin ich da nicht so schnell draufgekommen.

der Topic hat sich für mich erledigt - danke trotzdem an alle

Daniel


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