AGB  ·  Datenschutz  ·  Impressum  







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

Arbeit mit Buffer

Ein Thema von Sebastian Nintemann · begonnen am 28. Mai 2003 · letzter Beitrag vom 28. Mai 2003
 
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#3
  Alt 28. Mai 2003, 17:27
Hallo Christian, ich bin im Augenblick etwas ratlos.

Ich hatte versucht das so zu machen:
Delphi-Quellcode:
var
  P: PCardinal;
  C: Cardinal;
  //...
begin
  //... buffer füllen


  P := @buffer[4];
  C := P^;

  Memo1.Lines.Add(IntToStr(ord(PByteArray(@C)[0]))+' '+IntToStr(ord(PByteArray(@C)[1]))+' '+IntToStr(ord(PByteArray(@C)[2]))+' '+IntToStr(ord(PByteArray(@C)[3]))+' ');
 {so hab ich mir den Inhalt der 4 bytes anzeigen lassen, hat auch geklappt, 00, 00, 16, 66, das gleiche sagt mir der Hexviewer wenn die die Datei mit der der Buffer gefüllt wird lese.} 

  Memo1.Lines.Add(BytesToBinStr(@tagsize,4));
  {BytesToBinStr zeigt die bytes binär an. Funktion siehe unten. Binär sieht das jetzt so aus: 00000000 00000000 00010000 01000010. Gebe ich diesen Binärwert in den Windows-Rechner ein und stelle auf Dezimal um bekomme ich 4162. Das gleiche wenn ich deine Methode verwende.}

  Memo1.Lines.Add(IntToStr(C));
  {Hier steht jetzt 1108344832, egal ob ichs mit dem Pointer oder mit dem Kopieren der einzelnen bytes mache...}
end;


Hier noch die Funktion BytesToBinStr:
Delphi-Quellcode:
function BytesToBinStr(const bytes: PByteArray; const len: integer): string;
  var
    i,j: integer;
  begin
  result := '';
  for j := pred(len) downto 0 do
  begin

    result := ' ' + result;
    for i := 0 to 7 do
    begin
      if (bytes[j] and ($01 shl i))>0 then
      begin
        result := '1' + result;
      end
      else
      begin
        result := '0' + result;
      end;
    end;

  end;
  end;
Ich versteh einfach nicht wie aus $00 00 10 42 bzw 00000000 00000000 00010000 01000010 die Zahl 1108344832 wird. Ist das niederwertigste Bit nicht rechts?
Vielleicht hab ich auch einen Fehler in der BytesToBinStr Routine oder sonstwo, ich komm nicht drauf... Vielleicht weißt du ja weiter.
Ansonsten wär ich natürlich auch für Kritik dankbar (zB das man ein PByteArray so nicht verwenden sollte o.ä. )

Gruß, Sebastian

[EDIT]Hab mich mit der Hexzahl vertan, ist natürlich $00 00 10 42 (Dezimal:0,0,16,66), wie ich geschrieben hab[/EDIT]
  Mit Zitat antworten Zitat
 


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 07:04 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