Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TRegistry.ReadBinaryData - kleine Frage (https://www.delphipraxis.net/49697-tregistry-readbinarydata-kleine-frage.html)

Gina 14. Jul 2005 19:01


TRegistry.ReadBinaryData - kleine Frage
 
Hallochen...,

ich spiele grad ein wenig mit der Registry... :cyclops:

Hier im Forum hab ich mir alles was ich zu ReadBinaryData finden konnte angeschaut. Unter anderem diesen hier.

In den meisten Routinen taucht auch dieser Teil auf:

Delphi-Quellcode:
        repeat
          p := Pos(#0, tmpStr);

          if p <> 0 then
          begin
            Delete(tmpStr, p, 1);
            Insert(#13#10, tmpStr, p);
          end;
        until p = 0;
Da es für mich offensichtlich zu warm draußen ist... :oops: Kann mir please jemand erklären, warum man diesen Part dort benutzt? Gibt es in Binary-Einträgen Zeilenumbrüche?

Vielen lieben Dank, Gina.

mirage228 14. Jul 2005 19:06

Re: TRegistry.ReadBinaryData - kleine Frage
 
Hi,

für mich sieht es so aus, als ob #0 im Reg Binary Wert für Zeilenumbrüche stehen, aber lediglich als #0 gespeichert werden.

mfG
mirage228

NicoDE 14. Jul 2005 19:08

Re: TRegistry.ReadBinaryData - kleine Frage
 
Es handelt sich bei den Daten wahrscheinlich um REG_MULTI_SZ (welches AFAK nicht von der Delphi-Klasse unterstützt wird). Die Daten bestehen dann aus #0-terminierten Strings, wobei die Liste wiederum mit einer #0 beendet wird (also faktisch mit #0#0).

In dem Code werden die Strings offensichtlich mit Zeilenumbrüchen getrennt (um sie anzuzeigen oder in eine TStringList zu laden).

Gina 14. Jul 2005 19:35

Re: TRegistry.ReadBinaryData - kleine Frage
 
Achso...

Wenn ich also einen String ala 'Hallo Delphianer' als Binary in die Registry schreibe und ihn dann wieder auslese, dann brauche ich das gar nicht?

Vielen Dank, Gina.

NicoDE 14. Jul 2005 19:37

Re: TRegistry.ReadBinaryData - kleine Frage
 
Zitat:

Zitat von Gina
Wenn ich also einen String ala 'Hallo Delphianer' als Binary in die Registry schreibe und ihn dann wieder auslese, dann brauche ich das gar nicht?

Richtig.
Dafür gibt es aber Funktionen wie ReadString/WriteString (das hat aber nichts mit Binärdaten zu tun :)).

Gina 14. Jul 2005 19:46

Re: TRegistry.ReadBinaryData - kleine Frage
 
Danke dir.

Das mit ReadString/WriteString hab ich ja schon oft benutzt, nur eben Binary noch nicht. Daher wollte ich das mal ausprobieren... ;)

Wenn ich am Anfang #0 vor den String setze und das dann in die Registry schreibe, dann tut er das zwar, aber beim Auslesen, wird mir nix angezeigt, obwohl dahinter das 'Hallo Delphianer' steht. Dann Interpretiert er das wohl als "Null-String"?

Liebe Grüße, Gina.

NicoDE 14. Jul 2005 19:51

Re: TRegistry.ReadBinaryData - kleine Frage
 
Zitat:

Zitat von Gina
Dann Interpretiert er das wohl als "Null-String"?

Das liegt an den String-Routinen (Strings werden üblicherweise mit #0 terminiert).
Bei Binärdaten bleibt Dir die Interpretation selbst überlassen. Wenn Du einen Datenblock mit #0 am Anfang als String interpretierst, dann ist er leer (und der Rest wird ignoriert).

Gina 14. Jul 2005 20:06

Re: TRegistry.ReadBinaryData - kleine Frage
 
Ahh, ok...

Vielen lieben Dank... :kiss:

Gina.

nailor 14. Jul 2005 20:09

Re: TRegistry.ReadBinaryData - kleine Frage
 
Zitat:

Zitat von Gina
Delphi-Quellcode:
        repeat
          p := Pos(#0, tmpStr);

          if p <> 0 then
          begin
            Delete(tmpStr, p, 1);
            Insert(#13#10, tmpStr, p);
          end;
        until p = 0;

kann mir mal jemand sagen, warum an dieser stelle eine repeat-schleife dahin geprügelt wird, wo eine while-schleife hingehört? oder übersehe ich da jetzt was?

Gina 14. Jul 2005 20:23

Re: TRegistry.ReadBinaryData - kleine Frage
 
Also, wenn ich das richtig sehe, dann wäre eine while-Schleife 1 Zeile länger und kommt aufs Gleiche raus... :gruebel: Oder?

Vielleicht doch noch eine Ergänzungsfrage von mir:

Wenn ich so sehe, was alles als Binary bei mir in der Registry steht... Wozu ist dieser Typ eigentlich (im Sinner des Erfinders) wirklich gedacht? Wann sollte man unbedingt Binary nehmen?

Thx, Gina.


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