AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BinToHex Probleme

Ein Thema von delphinia · begonnen am 22. Jun 2011 · letzter Beitrag vom 23. Jun 2011
Antwort Antwort
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: BinToHex Probleme

  Alt 22. Jun 2011, 16:09
Delphi-Quellcode:
            BufferSize := Reg.GetDataSize('Typename');
            GetMem(Buffer, BufferSize);
            GetMem(Text, BufferSize * 2);
            FillChar(Text^, BufferSize, #0);
            try
               Reg.ReadBinaryData('Typename', Buffer^, BufferSize);

              BinToHex(Buffer, Text, BufferSize);
            finally
              FreeMem(Text);
              FreeMem(Buffer);
            end;
Kommts immernoch?! Falls nein, dann hast du nen Fehler - GetMem(Text, BufferSize) wäre dann die Ausbesserung!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
delphinia

Registriert seit: 16. Feb 2006
444 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: BinToHex Probleme

  Alt 22. Jun 2011, 16:17
@Aphton

ja


das hier ist meine komplette procedure:

Delphi-Quellcode:
var

  Buffer, Text: PAnsiChar;
  BufferSize: Integer;
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;

    if reg.OpenKey('\Software\MikroFil', false) then
    begin

      if (reg.ValueExists('Typename')) then
        if (reg.GetDataType('Typename') = rdBinary) then
        begin
          BufferSize := Reg.GetDataSize('Typename');
          GetMem(Buffer, BufferSize);
          GetMem(Text, BufferSize * 2);
          FillChar(Text^, BufferSize, #0);
          try
            Reg.ReadBinaryData('Typename', Buffer^, BufferSize);
            BinToHex(Buffer, Text, BufferSize);
          finally
            ShowMessage(Text); <----------------- Hier habe ich dann den * am Ende des sonst richtigen Wertes
            FreeMem(Text);
            FreeMem(Buffer);
          end;
        end;
    end;
  finally
    FreeAndNil(reg);
  end;
Doreen
Gruss Doreen
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: BinToHex Probleme

  Alt 22. Jun 2011, 21:25
Delphi-Quellcode:
GetMem(Text, BufferSize * 2);
FillChar(Text^, BufferSize, #0);
Da Text ein PAnsiChar ist, sollte das Füllen dann nicht auch mit BufferSize * 2 arbeiten?

FillChar(Text^, BufferSize * 2, #0); .

Sonst füllt man ja nur den Bereich, der sowieso mit den richtigen Daten gefüllt wird und kann garnicht testen, ob im Puffer mehr liegt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: BinToHex Probleme

  Alt 23. Jun 2011, 07:16
Wäre es nicht generell angesagt, nicht mit 2, sondern mit SizeOf(Char) zu multiplizieren? Dann muss man sich um die Ansi-/Unicode-Problematik keinen Kopf machen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#5

AW: BinToHex Probleme

  Alt 23. Jun 2011, 07:43
Sollte "Text" nicht um ein Zeichen länger sein, um mit einem abschließenden #0-Zeichen das Ende der Zeichenkette zu markieren?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#6

AW: BinToHex Probleme

  Alt 23. Jun 2011, 07:46
Laut Hilfe nicht (Unicode-Version):
Zitat:
BufSize legt die Größe von Buffer fest. Text muss auf eine Zeichenfolge zeigen, die mindestens 2*BufSize-Byte groß ist, da jedes Hexadezimalzeichen zwei Bytes darstellt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#7

AW: BinToHex Probleme

  Alt 23. Jun 2011, 09:06
Hier wird mit PAnsiChar gearbeitet:
Zitat:
Text gibt einen nullterminierten String zurück, der den in Buffer übergebenen Wert als Hexadezimalzahl darstellt.

BufSize legt die Größe von Buffer fest. Text muss auf eine Zeichenfolge zeigen, die mindestens 2*BufSize-Byte groß ist, da jedes Hexadezimalzeichen zwei Bytes darstellt.
Für die Funktion BinToHex mag das Nullzeichen am Ende egal sein (BuffSize wird ja übergeben).
Aber ShowMessage möchte sicher auch wissen, wie lang der übergebene Text ist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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