Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C Code in Delphi? (https://www.delphipraxis.net/171439-c-code-delphi.html)

milchbrötchen 6. Nov 2012 18:19

C Code in Delphi?
 
Guten Abend zusammen,
ich habe den unten stehenden Beispielquelltext in C.
"einfuegen" ist eine Procedure aus einer dll-Datei, die ich jetzt aus meinem Delphiprogramm aufrufen möchte.
Ich komme aber leider nicht mit den ganzen * und & klar :?
Wie müssen also die mittleren 5 Zeilen in Delphi aussehen?
Vielen Dank für die Hilfe :)

Code:
char db[10];
char eingabe[32];

char ergebnis[32];
char * erg_ptr;
char ** erg_ptr_ptr;
erg_ptr = &ergebnis[0];
erg_ptr_ptr = &erg_ptr;

einfuegen(db, eingabe, erg_ptr_ptr);

himitsu 6. Nov 2012 18:29

AW: C Code in Delphi?
 
So Einiges kann man sich aber aus den Namen ableiten.
Zitat:

Code:
erg_ptr_ptr = &erg_ptr;

Delphi-Quellcode:
erg_ptr_ptr := @erg_ptr;
:zwinker:

und die * sind jeweils eine Zeigerreferenz, also je ein "^".


Zitat:

Code:
char * erg_ptr;
char ** erg_ptr_ptr;

Delphi-Quellcode:
erg_ptr: ^AnsiChar;
erg_ptr_ptr: ^^AnsiChar;
aka
Delphi-Quellcode:
erg_ptr: PAnsiChar;
erg_ptr_ptr: ^erg_ptr; // oder PPAnsiChar, bzw ^PAnsiChar

implementation 6. Nov 2012 18:32

AW: C Code in Delphi?
 
Delphi-Quellcode:
var
// char ergebnis[32];
  Ergebnis: array[0..31] of char;
// char * erg_ptr;
  erg_ptr: PChar;
// char ** erg_ptr_ptr;
  erg_ptr_ptr: PPChar;
begin
// erg_ptr = &ergebnis[0];
  erg_ptr := @ergebnis[0];
// erg_ptr_ptr = &erg_ptr;
  erg_ptr := @erg_ptr;
  ...
end;

himitsu 6. Nov 2012 18:37

AW: C Code in Delphi?
 
Da CHAR eigentlich ein Byte, bzw. PAnsiChar ist, sollte es besser auch so definiert werden ... vorallem da der TE seine Delphi-Version verheimlicht. (ab D2009 gibt es sonst Probleme)


:gruebel:
Delphi-Quellcode:
var
  db: array[0..9] of AnsiChar;
  eingabe: array[0..31] of AnsiChar;
  ergebnis: array[0..31] of AnsiChar;
  erg_ptr: PAnsiChar;
  erg_ptr_ptr: ^erg_ptr;

//erg_ptr := @ergebnis[0];
//erg_ptr_ptr := @erg_ptr;
//einfuegen(db, eingabe, erg_ptr_ptr);
einfuegen(db, eingabe, @@ergebnis[0]);


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