![]() |
registry binary erstennen(prob mit dynamic array)
hi,
ich möchte einen binary eintrag inner reg machen und zwar is da das prob die dynamic array ohne gehts:
Delphi-Quellcode:
mit dynamic array nicht
procedure TForm1.Button1Click(Sender: TObject);
var binary_buf:array[0..1] of char; begin treg:=tregistry.create; TReg.RootKey:=HKEY_LOCAL_MACHINE; TReg.OpenKey('SOFTWARE\',False); if TReg.ValueExists('SOFTWARE\') = False then begin binary_buf[0]:=char(66); binary_buf[1]:=char(67); treg.WriteBinaryData('ka',binary_buf,sizeof(binary_buf)); edit1.text:=binary_buf[0]+binary_buf[1]; end; end; //--> ergebnis inner reg: 'BC' //--> ergebnis im edit1.text: 'BC'
Delphi-Quellcode:
tjoa jetzt muss ich blos noch wissen wo das prob is :?: :mrgreen:
procedure TForm1.Button1Click(Sender: TObject);
var binary_buf:array of char; begin treg:=tregistry.create; TReg.RootKey:=HKEY_LOCAL_MACHINE; TReg.OpenKey('SOFTWARE\',False); if TReg.ValueExists('SOFTWARE\') = False then begin SetLength(binary_buf,1); binary_buf[0]:=char(66); binary_buf[1]:=char(67); treg.WriteBinaryData('ka',binary_buf,sizeof(binary_buf)); edit1.text:=binary_buf[0]+binary_buf[1]; end; end; //--> ergebnis inner reg: ' ˜P¦.' //--> ergebnis im edit1.text: 'BC' oder kann man iwie anders binary inner reg speichern? mfg gandime |
Re: registry binary erstennen(prob mit dynamic array)
ein dynamsiches Array ist ein Pointer der auf die Daten zeigt. Daher ist SizeOf(Dynamsiches Array) immer genau so groß wie ein Pointer. um Die Größe zu ermitteln solltest du also die Anzahl der Einträge (mit Length ermitteln) mit der Größe eines Eintrags (Sizeof(char) bzw. SizeOf(DynArray[0])) multiplizieren.
Von daher sollte es so gehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var binary_buf:array of char; begin treg:=tregistry.create; TReg.RootKey:=HKEY_LOCAL_MACHINE; TReg.OpenKey('SOFTWARE\',False); if TReg.ValueExists('SOFTWARE\') = False then begin SetLength(binary_buf,1); binary_buf[0]:=char(66); binary_buf[1]:=char(67); treg.WriteBinaryData('ka',binary_buf[0],Length(binary_buf) * SizeOf(char)); edit1.text:=binary_buf[0]+binary_buf[1]; end; end; |
Re: registry binary erstennen(prob mit dynamic array)
joa also für den ersten array-eintrag geht es aber wie bekomme ich dann die anderen aus der array in den selben reg-eintrag?
|
Re: registry binary erstennen(prob mit dynamic array)
eigentlich sollten auf die Weise alle Einträge des Arrays in der Registry landen
"binary_buf[0]" dient zur dereferenzierung. Also sozusagen den Pointer auf den ersten zu schreibenden Eintrag dereferenzieren. Denn wenn du nur "binary_buf" verwendest wird nur der Pointer der auf die eigentlichen Daten zeigt, geschrieben + die Daten welche dahinter im speicher stehen. Ahh, hab den Fehler gefunden warum du nur ein element in die Registry schreibst:
Delphi-Quellcode:
Gib also bei SetLength als letzten Parameter die 2 an wenn du 2 elemente darin speichern willst.
SetLength(binary_buf,1); //du setzt die länge des Arrays nur auf 1
binary_buf[0]:=char(66); //Das ist ok, du schreibst in das 0te element (length1) binary_buf[1]:=char(67); //Gar nicht gut, du schreibst über das Array hinaus, es hat doch nur eine Länge von 1 und (höchster Index = 0) und du schreibst auf Index 1 |
Re: registry binary erstennen(prob mit dynamic array)
jap das wars thx geht jetzt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz