Seite 1 von 1
Fehlermeldung
Verfasst: 27.01.2009 17:41
von Susan20
Hallo, zusammen!
Ich bekomme ungefähr bei jedem dritten Debuggen eines von mir selbst geschriebenen Programms folgende Fehlermeldung für die letzte Zeile, in der die End-Anweisung steht:
Invalid Memory access. [read error at address 22615425]
Es ist jedesmal dieselbe Adresse. Das Programm läuft ansonsten einwandfrei. Ist das nur ein Schönheitsfehler? Oder gibt es für diese Fehlermeldung eine Ursache, die ich beseitigen sollte?
Ach ja, noch vergessen: Das Ganze passiert unter PB 4.30, unter PB 4.20 gab es für dasselbe Programm (einziger Unterschied: CreateGadgetList) nicht eine solche Fehlermeldung.
Verfasst: 27.01.2009 17:46
von Josef Sniatecki
Am besten ist es, wenn du uns einen Code zeigst. Denn sonst kann man
einen Fehler nicht direkt finden.
Ich kann nur eines sagen:
Wenn ein Fehler bei einer END-Anweisung auftritt, dann ist es
bestimmt eine Goto-Fehlsetzung oder ein Aufruf von CallFunction mit
einer falschen Anzahl an Parameter.
Verfasst: 27.01.2009 17:53
von ts-soft
> Ist das nur ein Schönheitsfehler?
Es gibt beim Programmieren keine Schönheitsfehler
Du greifst auf Speicher zu, der nicht existiert, entweder falscher Pointer,
Speicherbereich beim beschreiben überschritten und deshalb inzwischen
ungültig oder sonst was, ohne Code kann Dir keiner helfen.
Verfasst: 27.01.2009 18:03
von Susan20
Danke für die Antworten. Der Code ist wirklich zu lang fürs Posten - ehrlich. Er enthält Prozeduren für Fußschalter, Joypads zum Abspielen von mp3-Dateien. Mein Gedanke war, dass PB 4.30 vielleicht bei einigen Anweisungen empfindlicher hinsichtlich der Speicherverwaltung ist als PB 4.20 und dass ich darüber einen Hinweis auf die Ursache des "Schönheitsfehlers" bekommen könnte, zumal die Fehlermeldung nicht jedesmal auftaucht.
Verfasst: 27.01.2009 18:20
von edel
Benutzt du irgendwelche DLL und musst du da irgendwo nen PB Fenster oder sowas uebergeben?
Verfasst: 27.01.2009 18:59
von Susan20
@edel:
Ich benutze für meinen Fußschalter eine DLL:
Code: Alles auswählen
hdl.l = WindowID(#window)
CallFunction(0, "OpenUSBFootSW", hdl, 0)
In der anschließenden Repeat-Schleife fange ich dann den entsprechenden Event für das Drücken einer Fußtaste ab.
Verfasst: 27.01.2009 19:02
von ts-soft
Dann füg mal ein CloseWindow(0) am ende ein.
PS: Für DLL Aufrufe besser Prototypes verwenden!
Gruß
Thomas
Verfasst: 27.01.2009 19:08
von edel
Es kann sein das die DLL geschlossen wird, die interne Fensterfunktion
aber noch auf die in der DLL zeigt. Versucht man diese nicht mehr
gueltige Funktion nun aufzurufen, gibt es einen IMA. Unter 4.20 war
die Reihenfolge der PB Funktionen, die fuer das Freigeben der Objekte
verantwortlich sind, etwas anders. Also einfach mal Thomas Tipp testen.
Verfasst: 27.01.2009 19:35
von Susan20
Ihr seid echt gut drauf!!! Danke, ts-soft, für Deinen Tipp. Danke, edel, für die Erklärung. Der Schönheitsfehler ist behoben!
