Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CPP -> Delphi (https://www.delphipraxis.net/158887-cpp-delphi.html)

Gehstock 6. Mär 2011 20:05

Delphi-Version: 5

CPP -> Delphi
 
wie würdet ihr die Folgende Zeile Übersetzen mich verwirrt sie etwas

Code:
for (b = ~b & 0x3FFFFFFF; a >= 8; a -= 8, buffer++)

implementation 6. Mär 2011 20:39

AW: CPP -> Delphi
 
Code:
for (b = ~b & 0x3FFFFFFF; a >= 8; a -= 8, buffer++)
Vielleicht so:
Delphi-Quellcode:
var
  buffer, a, b: integer;
begin
  b := (not b) and $3FFFFFFF;
  while a >= 8 do begin
    ...
    Dec(a,8);
    Inc(buffer);
  end;
end;

Assarbad 6. Mär 2011 20:47

AW: CPP -> Delphi
 
buffer ist ziemlich sicher kein Integer. Vermutlich PAnsiChar oder sowas ...

implementation 6. Mär 2011 20:50

AW: CPP -> Delphi
 
Zitat:

Zitat von Assarbad (Beitrag 1086310)
buffer ist ziemlich sicher kein Integer. Vermutlich PAnsiChar oder sowas ...

Das wird wohl im C++-Quellcode drinstehen. Ging ja erstmal um die Zeile.

Assarbad 6. Mär 2011 23:00

AW: CPP -> Delphi
 
Zitat:

Zitat von implementation (Beitrag 1086311)
Das wird wohl im C++-Quellcode drinstehen. Ging ja erstmal um die Zeile.

Und mit ging es darum, daß du buffer als Integer deklariert hast :zwinker:

Gehstock 6. Mär 2011 23:38

AW: CPP -> Delphi
 
Danke ihr beiden,
Assarbad hat recht ist ein PAnsiChar
und wie übersetz ich das
Code:
if ( ((a ^ data) & (1L << 29)) != 0 )

Delphi-Quellcode:
var
ll : LongInt;

if not((a Xor data) and (SizeOf(ll) SHL 29)) = 0 then
so in etwa?

Assarbad 7. Mär 2011 00:52

AW: CPP -> Delphi
 
Zitat:

Zitat von Gehstock (Beitrag 1086334)
Delphi-Quellcode:
var
ll : LongInt;

if not((a Xor data) and (SizeOf(ll) SHL 29)) = 0 then
so in etwa?

Neee ...

Delphi-Quellcode:
if ((a xor data) and (1 shl 29)) <> 0 then

Phoenix 7. Mär 2011 06:08

AW: CPP -> Delphi
 
sizeof longint ist 1??

Gehstock 7. Mär 2011 08:14

AW: CPP -> Delphi
 
Also doch richtig?

himitsu 7. Mär 2011 08:24

AW: CPP -> Delphi
 
Das L kannst'e in Delphi ignorieren.

Und um deine letzte Frage zu beantworten:
Wieviele Bytes ist ein LongInt groß?

Gehstock 7. Mär 2011 08:29

AW: CPP -> Delphi
 
Das ist auch etwas verwirrend

Code:
DWORD fix(unsigned char *buffer,int length)
...
for (a = ~a & 0x3FFFFFFF; b >= 8; b -= 8, buffer++)
{
if (b==0x5*8)
b=0x5*8;
a = table[((a >> (30 - 8)) ^ *buffer) & 0xff]^ (a << 8);
}
welches ich mit
Delphi-Quellcode:
Function Fix (buffer: PAnsichar; len: Integer): DWord;
var
  c, a, d, e: DWord;
  b, i: Integer;
  buffer2: Array [0 .. 4] of Byte;
...
a := (not a) and $3FFFFFFF;
  while b >= 8 do
  begin
    if b = ($05 * 8) then b := $05 * 8;//macht für mich keinen sinn?
      a := Table[(a SHR (30 - 8) XOR strtoint(buffer)) and $FF] XOR (a SHL 8);
      Dec(b, 8);
      Inc(buffer);
  end;
übersetzen würde

SirThornberry 7. Mär 2011 12:11

AW: CPP -> Delphi
 
Was genau weißt du denn nicht? Bevor wir dir jeden Quelltext übersetzen ist es vielleicht hilfreicher dir die Dinge zu erklären die du nicht verstehst.

himitsu 7. Mär 2011 12:21

AW: CPP -> Delphi
 
Wie kommst du auf strtoint?
Hier soll der Zeichencode des ersten Bytes verwendet werden.
Ein einer Variable vorangestelltes
Delphi-Quellcode:
*
entspricht (glaub ich) dem derefferenzierenden nachfolgenden
Delphi-Quellcode:
^
.

Delphi-Quellcode:
Ord(buffer^)
, wenn es ein PAnsiChar ist ... bei einem
Delphi-Quellcode:
array of Byte
aka
Delphi-Quellcode:
TBytes
wäre es ein buffer^ oder
Delphi-Quellcode:
buffer[0]
.

Und ja, das
Delphi-Quellcode:
if (b==0x5*8) b=0x5*8;
scheint totaler Schwachsinn zu sein.

Assarbad 7. Mär 2011 14:19

AW: CPP -> Delphi
 
Zitat:

Zitat von SirThornberry (Beitrag 1086483)
Was genau weißt du denn nicht? Bevor wir dir jeden Quelltext übersetzen ist es vielleicht hilfreicher dir die Dinge zu erklären die du nicht verstehst.

+1 von mir :thumb:

Gehstock 7. Mär 2011 14:29

AW: CPP -> Delphi
 
wurde doch schon beantwortet

Danke nochmal euch allen


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