Startprobleme mit Software
-
sorry, hab ich ganz vergessen:
Das ein Fenster (das ich erst selber zur Runtime erzeuge) auf die Funktion die aus der StringListe lesen soll, zugreift und immer Exceptions kommen, weil das Hauptfenster noch nicht initialisiert wurde.
Ich hab keine Ahnung warum ausgerechnet dieses Fenster (es ist unter Verfügbare formulare eingetragen; nicht unter Automatisch erzeugen)
Borland C++6 Prof.
mfg
Tom
-
Dann probier doch einfach mal aus, ob der Fehler auch auftritt, wenn du das Fenster beim Start erzeugst.
-
ok probier ich gleich mal aus, aber warum sollte das darauf einfluss haben?
-
wie ichs mir gedacht habe...
von meinem Problem her hat sich dadurch nix geändert....
-
Dann nimm doch mal den Debugger und suche die Stelle, an der die Exception entsteht...
-
entsteht genau da wo er auf das Hauptfenster zugreifen will... egal ob ich aus der StringListe lesen will oder eine Funktion im Hauptfenster aufrufen will. Es kommt immer eine Exception.
Ich versteh einfach nicht warum nicht das blöde Hauptfenster zuerst erzeugt wird und dann die anderen sachen. Wie kann man denn das beeinflussen außer so wie ichs schon gemacht hab?
-
Hi Leute!
Nach ein bisschen debuggen ist mir aufgefallen (was ich wohl übersehen habe) dass das nur eine Klasse ist die in der gleichen cpp Datei steht wie die des Fensters -> deshalb auch mein vorheriger Schluss warum das Fenster diese Klasse aufruft.
Die Klasse die da drin steht wird nirgends über new erzeugt sonder hat nur eine Instanz: extern TEmsGroups EmsGroups; eben zugänglich gemacht. -> Das ist doch dann so was wie eine Struktur oder?
Aber warum wird diese beim Programmstart als erstes aufgerufen; ich hab auch schon Haltepunkte an alle Punkte im gesamten Prog an die Stellen gesetzt wo EmsGroups.Default() oder irgendwas anderes aus EmsGroups aufgerufen wird gesetzt, leider ohne Erfolg.
Der Debugger bleibt erst stehen wenn er in einer Funktion von EmsGroups is somit kann ich nicht feststellen wo der aufruf herkommt.
Hat jemand ne Idee?
Ist das hier wie mit Gloablen Variablen, dass die einfach zu beginn des ganzen erzeugt werden?
-
Hiermit
extern TEmsGroups EmsGroups;erzeugst du aber keine Instanz der Klasse TEmsGroups, sondern sagst dem Compiler nur, dass diese Variable überall bekannt sein soll (global). In irgendeiner cpp muß dann auch noch die Definition stehen (ohne dem extern).
-
erzeugen tu ich damit keine Instanz aber wenn ich dann z.B.: EmsGroups.Default() aufrufe dann ist es doch eine Instanz, oder?
Im Prinzip ist aber mein Problem (glaube ich) diese extern definition, was das ganze ja global verfügbar macht und dadurch hab ich auch das Prob. dass dies vor dem eigentlichen Hauptbild wo meine Komponente liegt ausgeführt wird.
Nur wie kann ich das mit dem ausführen verhindern bzw. wie kann ich das besser machen um das Prob. zu beheben.
Danke für alle Tipps.
mfg
Tom
-
Mach EmsGroups eben nicht global, sondern zum Member einer deiner Forms.
-
gibts noch andere Möglichkeiten oder muss ich das wirklich so machen?
Ist nämlich viel Arbeit das ganze zu ändern.
mfg
Tom