Thema: Delphi DynArray beschädigt

Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: DynArray beschädigt

  Alt 17. Feb 2007, 12:28
Du hast anscheinend eine falsche Herangehensweise an Inline-Assembler (IASM).

IASM ist manchmal eine echt praktische Sache, aber man sollte es nicht übertreiben. Du musst dich ja quasi implizit mit dem Compiler von Delphi verständigen. In diesem Fall, z.B. wie der Compiler mit dyn. Arrays umgeht. Das kann man sicher alles machen, ist aber überhaupt nicht sinnvoll und führt häufig zu Problemen. Gerade Speicherbereiche reservieren und "löschen" solltest du schon dem Delphi Memory Manager überlassen. Viele Köche verderben den Brei. Wenn du alles in die Hand nehmen willst, dann solltest du kein Delphi mehr benutzen sondern z.B. MASM32, also einen "echten" Assembler. Manchmal kannst du auch gar nicht vorhersehen, was die Code-Optimierung macht.
-->Fazit: Gewöhn dir bei IASM an, niemals (oder möglichst nie) Speicher zu reservieren. Falls du für dein Ergebniss aus der Assembler-Routine Speicher benötigst, dann lass ihn in der aufrufenden Routine reservieren und dann als PChar, oder PInteger, also als Pointer übergeben. Und dann kannst du in deiner Assemblerroutine mit "mov dword ptr [PInteger+4*x], irgendetwas" da reinschreiben.
Soweit klar? Also am besten immer nur 32bit-Werte übergeben.

roterKasten: Ich poste erstmal und les mir die beiden Beiträge gleich durch
Edit: Oh, es waren ja schon zwei Beiträge und ein veränderter. aber meiner hat noch volle gültigkeit.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat