Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ C/C++ zu Delphi (https://www.delphipraxis.net/155530-c-c-zu-delphi.html)

Muellermilchtrinker 27. Okt 2010 14:43

C/C++ zu Delphi
 
Hallo DP,

ich müsst mir kurz helfen. Wie übersetze ich diesen Quellcode
Code:
uint8_t data[] = "Hello World"
USB_LCD_Data(data,11,0)
nach Delphi.
Zur Info (wegen Unicode) verwende Delphi 2009
Danke.
Weil wenn ich als data nur "Hello World" habe, dann hab ich noch ein eckiges Kästchen zwischen jedem Buchstabe.

DIET3RIX 27. Okt 2010 15:01

AW: C/C++ zu Delphi
 
hi,

ich kenne mich mit C/C++ kaum aus. Das Vorab.

data[] ist ein Array von dem Datentyp uint8_t.
Danach rufst du eine Prozedure auf und gibts drei Parameter mit. Da ich nicht weiß um was es sich handelt, kann ich dir nicht sagen welche Bedeutung die haben. "Hello World" hat 11 Zeichen, dies könnte evtl. den zweiten Parameter erklären.

Handelt es sich um einen Microkontroller? Versuch es mal nur mit data, laos ohne [].

Mithrandir 27. Okt 2010 15:06

AW: C/C++ zu Delphi
 
uint8_t ist ein Byte in Delphi. Ich würde ein Array of Char nehmen, dann müsstest du die einzelnen Buchstaben auf die Arrayfelder aufteilen. Uff, Delphi ist schon lange her...

Assarbad 27. Okt 2010 15:16

AW: C/C++ zu Delphi
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1058132)
Zur Info (wegen Unicode) verwende Delphi 2009
Danke.
Weil wenn ich als data nur "Hello World" habe, dann hab ich noch ein eckiges Kästchen zwischen jedem Buchstabe.

Hah, und schon haste mein Interesse. Mal sehen wie man da wieder vernünftig (m.E.n. ist "Aufteilen in einzelne Zeichen" nicht vernünftig) an eine Zeichenkette kommt.

Ich bleibe ja nach wie vor dabei, daß die Umstellung auf Unicode komplett vermurkst wurde.

Namenloser 27. Okt 2010 15:18

AW: C/C++ zu Delphi
 
Nun weiß ich ja nicht, wie USB_LCD_Data deklariert ist, aber ich würde es mal so probieren:
Delphi-Quellcode:
var Data: AnsiString;
begin
  Data := 'Hello World';
  USB_LCD_Data(PAnsiChar(Data), Length(Data), 0);
end;

Muellermilchtrinker 27. Okt 2010 16:42

AW: C/C++ zu Delphi
 
Sodele, ich hab es jetzt fast wie NamenLozer gemacht außer das ich es mit PChar gemacht hab, da die Funktion ein PAnsiChar nicht akzeptiert hat. ;)

Zitat:

Zitat von Assarbad (Beitrag 1058149)
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1058132)
Zur Info (wegen Unicode) verwende Delphi 2009
Danke.
Weil wenn ich als data nur "Hello World" habe, dann hab ich noch ein eckiges Kästchen zwischen jedem Buchstabe.

Hah, und schon haste mein Interesse. Mal sehen wie man da wieder vernünftig (m.E.n. ist "Aufteilen in einzelne Zeichen" nicht vernünftig) an eine Zeichenkette kommt.

Ich bleibe ja nach wie vor dabei, daß die Umstellung auf Unicode komplett vermurkst wurde.

Soll ich das mit der Interesse positiv oder negativ auffassen. :stupid:

Assarbad 27. Okt 2010 19:02

AW: C/C++ zu Delphi
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1058163)
Sodele, ich hab es jetzt fast wie NamenLozer gemacht außer das ich es mit PChar gemacht hab, da die Funktion ein PAnsiChar nicht akzeptiert hat. ;)

Seltsam, denn dann sollte das Ergebnis das gleiche sein wie am Anfang.

Zitat:

Zitat von Muellermilchtrinker (Beitrag 1058163)
Soll ich das mit der Interesse positiv oder negativ auffassen. :stupid:

Jedenfalls nicht gegen dich. Vermurkst hat es ja Codegear/Embarcadero.

himitsu 27. Okt 2010 19:21

AW: C/C++ zu Delphi
 
Zitat:

Zitat von Assarbad (Beitrag 1058204)
Seltsam, denn dann sollte das Ergebnis das gleiche sein wie am Anfang.

Es wurde ja nicht veraten, wie diese Funktion deklariert ist, aber wenn sie mit PChar deklariert wurde, dann ist dieses falsch.

Delphi-Quellcode:
Array of AnsiChar
oder
Delphi-Quellcode:
Array of Byte
Wenn dieses aber eh nur als IN-Parameter genutzt wird, dann könnte man da auch direkt einen AnsiString und ab D2009 den RawByteString oder TBytes, bzw. TByteDynArray dort in der Deklaration verwenden.
Oder man nimmt dort einfach nur einen Pointer und kann so alles übergeben.


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