Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Strings kommen nicht richtig an.. (https://www.delphipraxis.net/155446-strings-kommen-nicht-richtig.html)

EWeiss 23. Okt 2010 22:55

Strings kommen nicht richtig an..
 
Ich sende einen String den ich vorher in ein byte Array konvertiert habe.
Der String sieht als BEispiel vorher so aus.

"C:\Programme"

Wenn ich nun diesen in VB mit meinen Tracer entgegennehme
sieht er so aus.

"C : \ P R O G R " usw...

Den string konvertiere ich auf diese weise..

Delphi-Quellcode:
var
  IntI: Integer;
begin
  IntI := Length(_string);
  SetLength(_binary, IntI);
  CopyMemory(@_binary[0], @_string[1], IntI);
warum kommt nun so ein verkrüppelter String dabei raus ?

gruss

Sir Rufo 23. Okt 2010 22:57

AW: Strings kommen nicht richtig an..
 
Welche Delphi-Version?

Riecht ein wenig nach Unicode (2 Byte)

EWeiss 23. Okt 2010 22:58

AW: Strings kommen nicht richtig an..
 
Zitat:

Zitat von Sir Rufo (Beitrag 1057470)
Welche Delphi-Version?

Riecht ein wenig nach Unicode (2 Byte)

D2009

gruss

himitsu 23. Okt 2010 23:02

AW: Strings kommen nicht richtig an..
 
Jupp, Unicode.

Wenn
Delphi-Quellcode:
_string: String
, dann
Delphi-Quellcode:
begin
  IntI := Length(_string) * SizeOf(Char);
  SetLength(_binary, IntI);
  CopyMemory(@_binary[0], @_string[1], IntI);
Aber Achtung: Beim Datentransfer NIE dynamische Typen verwenden.

Besser direkt generische Typen, wie AnsiString oder UnicodeString/WideString, bzw. AnsiChar oder WideChar verwenden, damit das Datenformat nicht Compilerabhängig ist.

EWeiss 23. Okt 2010 23:05

AW: Strings kommen nicht richtig an..
 
Zitat:

Zitat von himitsu (Beitrag 1057472)
Jupp, Unicode.

Wenn
Delphi-Quellcode:
_string: String
, dann
Delphi-Quellcode:
begin
  IntI := Length(_string) * SizeOf(Char);
  SetLength(_binary, IntI);
  CopyMemory(@_binary[0], @_string[1], IntI);
Aber Achtung: Beim Datentransfer NIE dynamische Typen verwenden.

Besser direkt generische Typen, wie AnsiString oder UnicodeString/WideString, bzw. AnsiChar oder WideChar verwenden, damit das Datenformat nicht Compilerabhängig ist.

Ich werde es mal versuchen Danke ;)
Obwohl ich bei WideString genau das gleiche ergebnis bekomme..

Hier meine Widestring function
Delphi-Quellcode:
var
  IntI: Integer;
begin
  IntI := Length(_WString) * SizeOf(WideChar);
  SetLength(_binary, IntI);
  CopyMemory(@_binary[0], @_WString[1], IntI);
gruss

Sir Rufo 23. Okt 2010 23:07

AW: Strings kommen nicht richtig an..
 
Logisch, ist ja definitiv Unicode :mrgreen:

EWeiss 23. Okt 2010 23:13

AW: Strings kommen nicht richtig an..
 
Zitat:

Zitat von Sir Rufo (Beitrag 1057477)
Logisch, ist ja definitiv Unicode :mrgreen:

Ich habe das ergebnis bei beiden ;)
Auch nach der geänderten Fassung.
Muss nochmal prüfen ob ich das gleiche ergebnis auch von VB nach VB habe ..

Wenn ich so überlege scheint es doch richtig zu sein denn ich setze es ja selbst ins Unicode Format wenn es in VB ankommt :shock:
Der Übeltäter könnte dann auch #9 = vbTab sein oder aber es wird der Delemiter "," nicht mit übergeben.

EDIT:
Nop ist nicht richtig wie es ankommt
Von VB to VB sieht es aus wie auf Bild 2 (mist2.jpg)

gruss

himitsu 23. Okt 2010 23:59

AW: Strings kommen nicht richtig an..
 
VB ist Ansi

Wenn du Unicode versendest, dann empfängt man auch Unicode.

Willst du ANSI empfangen, dann mußt du natürlich ANSI versenden. :wink:

EWeiss 24. Okt 2010 00:10

AW: Strings kommen nicht richtig an..
 
Zitat:

Zitat von himitsu (Beitrag 1057480)
VB ist Ansi

Wenn du Unicode versendest, dann empfängt man auch Unicode.

Willst du ANSI empfangen, dann mußt du natürlich ANSI versenden. :wink:

Arghh leuchtet mir ein ;)

Danke !
Hoffe es funktioniert jetzt.

EDIT:Jetzt kommt alles korrekt an und wird richtig ausgegeben.

gruss


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