Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Registry ReadBinaryData Problem

  Alt 9. Aug 2008, 19:07
Moin Darkface,

ehrlich gesagt finde ich Deinem Code mehr als einen Fehler

Die AV wird dadurch verursacht, dass ReadBinaryData keine Typenangabe für den Buffer verwendet.
Deshalb musst Du, wenn Du einen String als Buffer verwendest, noch angeben, ab welcher Stelle des Strings der Buffer gefüllt werden soll. In der Regel wird dieses die erste Stelle sein.
Wenn Du hier mal nach Hier im Forum suchenTFileStream suchst, wirst Du auf viele Beispiele stossen, denn dort ist es mit Read und Write dasselbe.

regist.ReadBinaryData('ItemPos1280x1024(1)', n[1], size); Nun noch zu den anderen "Problemstellen":
OpenKey ist eine Funktion, liefert also einen Wert zurück, der anzeigt, ob der Aufruf erfolgreich war.
Nur in diesem Falle sollten dann auch die Zeilen ausgeführt werden, die im Erfolgsfalle auszuführen sind.

Nach dem erfolgreichen Öffnen des Keys benötigst Du wieder einen try/finally-Block, um das Schliessen des Keys sicherzustellen.

CloseKey fehlt.
Ich weiss, bei TRegistry.Free wird, über TRegistry.Destroy auch CloseKey aufgerufen, aber sobald man mehrere Keys öffnet werden Resourcen nicht wieder freigegeben. Auch wenn man nur einen Key öffnet, ist es einfach sauberer diesen auch wieder gezielt zu schliessen.

Ausserdem hast Du noch ein ganz anderes Problem:
Jetzt wirst Du zwar keine AV mehr bekommen, aber Edit und Memo werden leer bleiben.
Du liest schliesslich einen Binären Wert, aus dem Du erst einmal die gewünschten Werte extrahieren und in eine lesbares Format umwandeln musst, bevor Du sie anzeigen kannst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat