Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Übersetzung unsigned char* rcv / unsigned char *data nach Delphi (https://www.delphipraxis.net/166357-uebersetzung-unsigned-char%2A-rcv-unsigned-char-%2Adata-nach-delphi.html)

x000x 9. Feb 2012 12:40

Delphi-Version: 5

Übersetzung unsigned char* rcv / unsigned char *data nach Delphi
 
Moin moin,

folgende C++ Header habe ich wie folgt übersetzt:
Delphi-Quellcode:
// BYTE __stdcall PiccRead(unsigned char addr,unsigned char* data);
TFNPiccRead              = function(addr: UCHAR; data: PAnsiChar): UCHAR; stdcall;

// BYTE __stdcall PiccValue(unsigned char dd_mode,unsigned char addr,unsigned char *value,unsigned char trans_addr);
TFNPiccValue             = function(dd_mode, addr: UCHAR; value: PAnsiChar; trans_addr: UCHAR): UCHAR; stdcall;
Worin besteht der Unterschied zwischen unsigned char* data und unsigned char *value?

Viele Grüße
Peter

himitsu 9. Feb 2012 13:41

AW: Übersetzung unsigned char* rcv / unsigned char *data nach Delphi
 
ich würde es mal so übersetzen (auch wenn ich mich in C nicht so gut auskenn)

unsigned char* | data = Pointer-Typ | Parameter
unsigned char | *value = Typ | Parameter als Referenz

in Delphi dann wörtlich
data: PByte
var value: Byte

Wobei ich dann vorzugsweise Beides mit Letzerem (var) übersetzen würde, es sei denn der Parameter ist optional (man also auch NIL angeben können möchte).

implementation 9. Feb 2012 13:49

AW: Übersetzung unsigned char* rcv / unsigned char *data nach Delphi
 
Wo der Stern steht ist unerheblich. Ob man den Stern an den Typen anhängt oder vor den Namen stellt, wird vom C-Compiler gleich behandelt. Man kann ihn auch unverbunden einfach dazwischen stellen.
Code:
// Alles das gleiche:
typ* name;
typ * name;
typ *name;
... und zwar alles Pointer. Referenzparameter gibt es erst ab C++, und sie werden dort mit einem & gekennzeichnet. Die lassen sich dann tatsächlich so behandeln, wie Var/Out in Delphi. In reinem C muss man das ganze eben mit Pointern umgehen, und da unterscheidet der Compiler nicht, wie der Stern steht. Das ist dann reine Sache der Ästhetik, wie der Schreiber es schöner findet.
Ich würde es alles einheitlich übersetzen, also entweder überall Pointer oder überall Var. Himi's Vorschlag, nach der Semantik zu gehen, ist aber auch sehr schön!

x000x 9. Feb 2012 13:59

AW: Übersetzung unsigned char* rcv / unsigned char *data nach Delphi
 
Hallo ihr beiden,

danke für eure Antworten.

Zitat:

Zitat von implementation (Beitrag 1150109)
Wo der Stern steht ist unerheblich. Ob man den Stern an den Typen anhängt oder vor den Namen stellt, wird vom C-Compiler gleich behandelt. Man kann ihn auch unverbunden einfach dazwischen stellen.

Jetzt bin ich ein ganzes Stück weiter :-)

Viele Grüße
Peter


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