Problem bei Lesen aus Binärdatei
-
@akari: ich weiß nicht so ganz genau was du mir sagen willst, aber dass ich einen Haltepunkt setzen könnte, um herauszufinden, ob es an dieser Anweisung liegt... ja, hätte ich noch machen können, ich war wohl etwas voreilig.
Ich habe nun einen Haltpunkt gesetzt. Die EAccessviolation tritt bei Ausführung o.g. Anweisung auf. Die einzige Variable, die mit der Anweisung zusammenhängt ist s, aber das erwähnte ich ja bereits. s ist an dieser Stelle mit dem String "COM1" gefüllt. Es müsste also einfach ein Eintrag "COM1" der ComboBox hinzugefügt werden... stattdessen EAccessViolation. (Im BDS2006 aber nicht.)Edit: Die gelinkte Anleitung finde ich übrigens sehr einsteigerfreundlich! Danke
-
Ich vermute einfach mal, dass der Fehler schon vorher passiert ist. Gehe mal einfach Schritt für Schritt mit dem Debugger durch deinen Code und schau dir die variablen an (hauptsächlich Arrays und Zeiger). Versuche herauszubekommen, ob dort irgendetwas ungültig ist. Wenn dein Code zu groß ist, kommentiere alles raus was nicht unbedingt dafür benötigt wird.
-
Puhh... eigentlich wollte ich jetzt ins WE... Also jage ich nun ein Phantom... Wie soll ich es beschreiben: Die entsprechende Unit/Form wird erst angezeigt, wenn man im Hauptform einen Menüeintrag auswählt (mit ShowModal). Ab wo soll ich denn da schrittweise durchgehen, wenn mir nichtmal das Hauptform angezeigt wird? Richtig von Anfang an? Wo setzt man dann den ersten Haltepunkt? Warum wird die UnterForm/Unit eigentlich schon beim Programmstart erzeugt? Kann ich das FormCreate nicht dahin verschieben, wenn ich den entsprechenden Menüpunkt wähle?
-
Hallo
deinn Zugriff erfolgt in FormCreate (sollte man nicht verwenden !!)
ComboBoxPort->Items->Add(s); // fügt s in Liste ein
dann ist der Fehler doch schon gefunden
Mfg
Klaus
-
Guten Morgen,
KlausB schrieb:
dein Zugriff erfolgt in FormCreate (sollte man nicht verwenden !!) ... dann ist der Fehler doch schon gefunden
Warum das nicht, da wird doch eine Ereignisbehandlung angeboten? Hast du einen Link bzw. eine Erklärung für mich? Ich werd' gleich mal die Suche ankurbeln...
Edit: Mir dämmert was... Wenn ich etwas im OnCreate Ereignis mache, dann sind ja die zum entsprechenden Form gehörenden Komponenten noch nicht erstellt, dh. wenn ich auf eine noch-nicht-erstellte ComboBox zugreifen, wird natürlich eine exception geworfen. Bin ich damit auf dem richtig Weg?
Edit2: Ich habe jetzt mal die OnCreate-Behandlungen geleert und das Prog startet ohne exceptions. Ich werde also Funktionen schreiben, die die gewünschten Initialisierungen vornehmen, wenn alle Create's vollzogen sind... das teste ich jetzt mal.
-
Ja.
-
Was mir aber absolut nicht einleuchten will: warum funktioniert es in dem Prog, aus dem ich die entsprechenden Units übernommen habe? Da wird auch Einiges an Initialisierungen im OnCreate-Ereignis vorgenommen und es werden keine exceptions geworfen, trotz try... catch...
-
Das Problem mit OnCreate ist, dass du eben nicht weißt welche Komponenten schon erzeugt sind und welche nicht. Das ist einer der Gründe, weswegen man OnCreate überhaupt nicht verwenden sollte. Alle Initialisierungen gehören in den Konstruktor. Es gibt da auch irgendwo einen Thread dazu. Ich werde mal suchen.
-
Da ist er.
http://web.archive.org/web/20030802150646/http://bcbdev.com/articles/suggest.htm#oncreate
-
Jo
vielen Dank. Damit ist noch klarer, warum im OnCreate nichts gemacht werden soll, was das Form betrifft, welches gerade erstellt wird.... Weiter im Neuen Thread.