AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FormCreate -> Systemfehler 87 - Flascher Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

FormCreate -> Systemfehler 87 - Flascher Parameter

Ein Thema von Zerolith · begonnen am 12. Jul 2004 · letzter Beitrag vom 13. Jul 2004
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 12. Jul 2004, 22:20
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
Daniel
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 12. Jul 2004, 22:35
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.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 13. Jul 2004, 00:25
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
Daniel
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 13. Jul 2004, 01:03
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.
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 13. Jul 2004, 04:06
@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)

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.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 13. Jul 2004, 12:02
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
Daniel
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 13. Jul 2004, 20:27
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.


...das nur mal so als eine dafür event. 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...)
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: FormCreate -> Systemfehler 87 - Flascher Parameter

  Alt 13. Jul 2004, 21:05
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
Daniel
  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 04:04 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