Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umbau C nach Delphi (https://www.delphipraxis.net/84155-umbau-c-nach-delphi.html)

yörsch 12. Jan 2007 10:51


Umbau C nach Delphi
 
Hai Zusammen, :hi:

Kann damit einer anfangen? Ich bin eindeutig bisser in Delphi...

Code:
char * pBuffer = (char*) new char[ iSizeOfBufferToSupply ];
Meine Übersetzung
Delphi-Quellcode:
pBuffer   : array of ^CHAR   ;
iSizeOfBufferToSupply : Integer;
...
SetLength(pBuffer,iSizeOfBufferToSupply );
und Noch einen
Code:
struct flag {
  unsigned fFlipVert;
  unsigned fFlipHori;
  unsigned fDibWidth;
  unsigned fSyncStamp;
}
Meine Übersetzung
Delphi-Quellcode:
 flag = packed Record
  fFlipVert : Byte;
  fFlipHori : Byte;
  fDibWidth : Byte;
  fSyncStamp: Byte;
 end;
:feuerchen:
Gruß

Jörg

shmia 12. Jan 2007 10:58

Re: Umbau C nach Delphi
 
Das lässt sich relativ elegant mit einem AnsiString lösen:
Delphi-Quellcode:
var
   buffer : Ansistring;
   pbuffer : PChar;
begin
   SetLength(buffer, iSizeOfBufferToSupply);
   pbuffer := PChar(buffer); // Zeiger auf 1. Byte
Der Vorteil in Vergleich zu new & dispose bzw. GetMem & FreeMem ist, dass du dir
über die Freigabe des Speichers keine Gedanken machen musst.

Der_Unwissende 12. Jan 2007 11:46

Re: Umbau C nach Delphi
 
Zitat:

Zitat von yörsch
Code:
struct flag {
  unsigned fFlipVert;
  unsigned fFlipHori;
  unsigned fDibWidth;
  unsigned fSyncStamp;
}
Meine Übersetzung
Delphi-Quellcode:
 flag = packed Record
  fFlipVert : Byte;
  fFlipHori : Byte;
  fDibWidth : Byte;
  fSyncStamp: Byte;
 end;

Hi,
ich würde denken, dass deine zweite Übersetzung so nicht stimmt. Bei mir ist es dann mit C auch nicht soweit her, aber wenn ich mich nicht irre, wird ein einfaches unsigned wie ein unsigned int behandelt, es wird also die Standardgröße auf deinem System verwendet.
Entsprechend solltest Du es eher mit es eher mit

Delphi-Quellcode:
 flag = packed Record
  fFlipVert : Integer;
  fFlipHori : Integer;
  fDibWidth : Integer;
  fSyncStamp: Integer;
 end;
übersetzen.

yörsch 12. Jan 2007 12:15

Re: Umbau C nach Delphi
 
Erstmal DANKE für Eure Antworten :dancer:

Chewie 13. Jan 2007 00:04

Re: Umbau C nach Delphi
 
Zitat:

Zitat von Der_Unwissende
Zitat:

Zitat von yörsch
Hi,
ich würde denken, dass deine zweite Übersetzung so nicht stimmt. Bei mir ist es dann mit C auch nicht soweit her, aber wenn ich mich nicht irre, wird ein einfaches unsigned wie ein unsigned int behandelt, es wird also die Standardgröße auf deinem System verwendet.


Soweit sehe ich das auch. Aber:

Zitat:

Zitat von Der_Unwissende
Entsprechend solltest Du es eher mit es eher mit

Delphi-Quellcode:
 flag = packed Record
  fFlipVert : Integer;
  fFlipHori : Integer;
  fDibWidth : Integer;
  fSyncStamp: Integer;
 end;
übersetzen.

Wieso hier Integer? Wir reden doch von vorzeichenlosen Typen, hier wäre also nicht Integer, sondern Cardinal korrekt.

Der_Unwissende 13. Jan 2007 10:03

Re: Umbau C nach Delphi
 
Zitat:

Zitat von Chewie
Wieso hier Integer? Wir reden doch von vorzeichenlosen Typen, hier wäre also nicht Integer, sondern Cardinal korrekt.

:oops:
Hast natürlich recht, war ja unsigned, hüstel.


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