Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Cpp nach Delphi übersetzung (https://www.delphipraxis.net/187166-cpp-nach-delphi-uebersetzung.html)

Horst0815 3. Nov 2015 10:20

Cpp nach Delphi übersetzung
 
folgenden Cpp Code
Code:
if ((err = LoadWSOfile((flge == errnone ? iFileLength - Size_XYZ_file : iFileLength))) == errnone)
hab ich zu

Delphi-Quellcode:
err := LoadWSOfile(flge);
if flge = Integer(errnone) then flge := iFileLength - Size_XYZ_file else flge := iFileLength;
 if err = Integer(errnone) then
Übersetzt, scheint aber falsch zu sein

frankyboy1974 3. Nov 2015 10:32

AW: Cpp nach Delphi übersetzung
 
hallo,

ich würde das so lesen

Delphi-Quellcode:
if flge = errnone then
  err:= LoadWSOfile(iFileLength - Size_XYZ_file)
else
  err:= LoadWSOfile(iFileLength);
if err= errnone then
mfg

uligerhardt 3. Nov 2015 10:33

AW: Cpp nach Delphi übersetzung
 
Die Fallunterscheidung gehört doch in den Parameter von LoadWSOFile, nicht außerhalb des Aufruf. (Wenn ich mich bei den Klammern nicht verzählt habe. :mrgreen:)
Siehe frankys Post.

Horst0815 3. Nov 2015 10:47

AW: Cpp nach Delphi übersetzung
 
Dankeschön

und welcher Datentyp ist das eigentlich
Code:
byte *SMSign[2] = {SMSign0, SMPign1};
ein PByte-Array? weil
Code:
byte SMSign0[] = "ein string";
byte SMSign1[] = "noch ein string";

TiGü 3. Nov 2015 10:57

AW: Cpp nach Delphi übersetzung
 
Zitat:

Zitat von Horst0815 (Beitrag 1320414)
und welcher Datentyp ist das eigentlich ein PByte-Array?

array of PByte?
PByte = ^Byte?
:gruebel:

Horst0815 3. Nov 2015 10:58

AW: Cpp nach Delphi übersetzung
 
wie übersetz ichs dann?

Der schöne Günther 3. Nov 2015 11:02

AW: Cpp nach Delphi übersetzung
 
Du wirst in deinem C-Code irgendwo wohl etwas wie
Code:
typedef unsigned char byte;
drin haben, oder?

Ich glaube an einfachsten fährst du nicht mit Byte Char-Arrays, sondern dem Delphi-Typen
Delphi-Quellcode:
PChar
bzw. in diesem Fall wohl
Delphi-Quellcode:
PAnsiChar
.

Horst0815 3. Nov 2015 11:09

AW: Cpp nach Delphi übersetzung
 
in der Tat

Code:
#define dword unsigned int
#define word unsigned short
aber nix mit byte


ja hatte es bisher mit PChar umgesetzt wollt nur sicher gehen

Der schöne Günther 3. Nov 2015 11:19

AW: Cpp nach Delphi übersetzung
 
Das define/typedef kommt möglicherweise aus einem Import. Aber es geht doch um ein Delphi in welchem ein Char größer als ein Byte ist, richtig? Dann wäre PAnsiChar doch das richtige.

mensch72 3. Nov 2015 11:20

AW: Cpp nach Delphi übersetzung
 
mein Delphi ab 2007 kennt PByteArray, was man überall wo in Cpp mit BYTE* gearbeitet wird in Delphi verwenden kann.

Da in CPP gerne mit BYTE Arrays für normale nicht UniCode Zeichenketten(= Zeichenarrays:)) gearbeitet wird, sollte man bei CPP->Delphi Vorhaben sich mal solche 3 Hilfsfunktionen in Delphi basteln. Ich habe das schmutzig für UniCode XE selbst per jedem 2. Byte gelöst, weil ich leider noch kein auf für FMX OutOfTheBox portables Beispiel für Delphi UnicodeString <-> UTF8ByteArray gefunden habe. TEncoding wäre da ja dafür wohl gedacht, aber ich habe es noch nicht geschafft, meine 3 simplen Funktionen per TEncoding zu realisieren...

function TXTstringToPByteArray(const value:string; const baUTF8 : PByteArray; const maxlen:Integer):Integer;
function PByteArrayToTXTstring(var value:string; const baUTF8 : PByteArray; const maxlen:Integer):Integer; overload;
function PByteArrayToTXTstring(const baUTF8 : PByteArray; const maxlen:Integer):string; overload;

Sollte es jemanden geben, der die paar Zeilen mit TEncoding für UniCodeString<->UTF8ByteArray griffbereit oder im Gedächtnis hat, wäre das auch hier sicher helfen

Sir Rufo 3. Nov 2015 12:01

AW: Cpp nach Delphi übersetzung
 
Zitat:

Zitat von mensch72 (Beitrag 1320420)
Sollte es jemanden geben, der die paar Zeilen mit TEncoding für UniCodeString<->UTF8ByteArray griffbereit oder im Gedächtnis hat, wäre das auch hier sicher helfen

Meinst du so etwas?
Delphi-Quellcode:
program dp_187166;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.Generics.Collections,
  System.SysUtils;

function PByteArrayToString( const Data: PByteArray; const DataCount: Integer; const Encoding: TEncoding ): string;
var
  buffer: TBytes;
begin
  SetLength( buffer, DataCount );
  TArray.Copy<Byte>( Data^, buffer, DataCount );
  Result := Encoding.GetString( buffer );
end;

procedure Main;
const
  expectedStr = 'foobar';
var
  buffer  : TArray<Byte>;
  actualStr: string;
begin
  buffer   := TEncoding.UTF8.GetBytes( expectedStr );
  actualStr := PByteArrayToString( @buffer[ 0 ], Length( buffer ), TEncoding.UTF8 );
  Assert( actualStr = expectedStr );
end;

begin
  try
    Main;
  except
    on E: Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;

end.

Horst0815 3. Nov 2015 12:43

AW: Cpp nach Delphi übersetzung
 
Danke für alle Tips und Vorschläge

mensch72 3. Nov 2015 13:34

AW: Cpp nach Delphi übersetzung
 
..."Meinst du so etwas?"...

:) ja genau sowas meinte ich... damit kann ich meinen Code etwas mit Delphi-Like bekommen


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