Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   AV bei Methoden-Ende (https://www.delphipraxis.net/170208-av-bei-methoden-ende.html)

Medium 5. Sep 2012 12:31

Delphi-Version: 5

AV bei Methoden-Ende
 
Liste der Anhänge anzeigen (Anzahl: 1)
Aloah DP,

ich baue gerade ein kleines Backup/Restore Tool (bzw. Modul) für MySQL Tabellen. Das ganze ist noch recht roh und klein, vor allem weil ich mich seit 2 Stunden mit einem Phänomen herum plage, wozu mein Latein nicht mehr ausreicht.

Ich habe einen Mini-Test angehängt, der eine Backup-Datei von mir liest. Die betroffene Methode ist in der Unit _uRestore.pas ReadCreateStatement(), cirka Zeile 30. Lasse ich hier das zweite ReadBuffer weg, kommt die AV auch nicht mehr. Da aber der Buffer-Inhalt nach dem Read völlig richtig ist, komme ich einfach nicht dahinter, was daran zur AV führt. Zumal die Adressen der AV auch immer mal etwas anders sind, und das CPU-Fenster auch nicht unbedingt immer an der gleichen Stelle im ASM-Code aufpoppt.
Durchsteppen alleine half mir auch nicht so recht, da F7 auf dem end; der Methode einfach direkt zu der AV führt. Ich weiss nicht mehr, wo ich mal gucken könnte.

(Ich habe alles was an die Datenbank geht mal aus der Klasse gestrichen, nicht jeder hat UniDAC und eine passende DB parat denke ich :). Die Unit _uBackup.pas ist nicht für den Test angepasst und wird für diesen auch nicht gebraucht. Die ist nur da, damit ersichtlich wird, wie die beiliegende Datei "consts.ktb" entstanden ist. Falls interessant/wichtig.)

Es wäre super, wenn sich das mal jemand in einem stillen Minütchen angucken mag. Besten Dank dafür auch schon mal im Voraus!

Bummi 5. Sep 2012 12:43

AW: AV bei Methoden-Ende
 
müsste das nicht
Delphi-Quellcode:
f.ReadBuffer(createStatement[1], createLength*SizeOf(WideChar));
heißen?

Medium 5. Sep 2012 12:48

AW: AV bei Methoden-Ende
 
Ich geh tot. Beim WriteBuffer hatte ich es mit Index am String versucht, und das hat geknallt. Jetzt beim Restore bin ich einfach mal davon ausgegangen, dass das gleich sein müsste :wall:. An sowas hängt man dann für Stunden :lol:
Danke!

Edit: OOPS! Nein, doch nicht. Leider stimmt dann der Inhalt des strings nicht mehr, aber die AV ist weg. Meh.

sirius 5. Sep 2012 12:49

AW: AV bei Methoden-Ende
 
Delphi-Quellcode:
f.ReadBuffer(createStatement[1], createLength*SizeOf(WideChar));

Edit: Man ist die DP schnell.....

Medium 5. Sep 2012 12:53

AW: AV bei Methoden-Ende
 
Das war es leider nicht. Ich bin mir sicher, dass meine Statements nicht in Chinesisch geschrieben sind :) (Solche Zeichen landen dann im String).

Medium 5. Sep 2012 13:05

AW: AV bei Methoden-Ende
 
Ach Leute, sorry für den Push hier. Aber meine Doofheit... Sobald ich mit Index 1 schreibe, ist auch das gelesene richtig. Ich hab mich davon irritieren lassen, dass in der unkomprimierten Datei dann mit Nodepad die Chinesischen Zeichen waren. Jetzt stimmt auch mein Weltbild wieder.

himitsu 5. Sep 2012 13:09

AW: AV bei Methoden-Ende
 
Immer diese AnsiStrings. :roll:


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