![]() |
Arbeiten mit Pipes
Hallo Leute,
ich hab da ein riesen Problem diese Funktion klappte unter Delphi 2006 ohne Probleme:
Delphi-Quellcode:
Nach der Umstallung auf Delphi 2009 bekomme ich den Message mit div \0 .. zurück also keinen richtigen Stringmehr.
procedure SendPipeMessage(lpvMessage: PChar);
var fSuccess: BOOL; cbWritten: DWord; begin try fSuccess:= WriteFile(hPipe, lpvMessage^, strlen(lpvMessage) + 1, cbwritten, nil); if not fSuccess then begin InitPipe; end; except end; end; Ich meine zu wissen das sich in der Variablenthematik bezüglich unicode was getan hat nur momentan stehe ich leider völlig auf dem schlauch. Also die pipe Message ist z.B. 'DAIL 123456789' dann bekomme ich jetzt "D\0I\0A\0L\0 \01\02\0" zurück die \0 sind definitiv zu viel in dem String. Ich hoffe es kann mir jemand helfen. |
Re: Arbeiten mit Pipes
Hallo Digielm,
wie schaut es denn aus wenn Du den Prozedurkopf so änderst?
Delphi-Quellcode:
Grüße
procedure SendPipeMessage(lpvMessage: PAnsiChar);
Klaus |
Re: Arbeiten mit Pipes
OK danke für den Tip
Bin ja auch saudoof hätte ich eigentlich selber drauf kommen müssen. Danke nochmals |
Re: Arbeiten mit Pipes
dann aber natürlich auch strlenA verwenden
|
Re: Arbeiten mit Pipes
ALso strlenA kennt mein Delphi nicht
und wenn ich
Delphi-Quellcode:
schicke kommt immer nur das 1. Zeichen mit
SendPipeMessage(pansichar(String));
bzw so
Delphi-Quellcode:
klappt nur wenn ich das no mache gehts nicht message := Pansichar('123456');
Delphi-Quellcode:
var
uebergabestring : String; message := Pansichar(uebergabestring); |
Re: Arbeiten mit Pipes
Strings sind ab D2009 per Voreinstellung als Unicode definiert. Du stülpst nun einem Unicode-String ein PChar über, was schon mal uncool ist. Denn Der PChar sieht nun das Unicode-Zeichen '1', was intern als 31 00 dargestellt wird. Nun ist 00 das String-Ende und -wupps- hast Du dein einzelnes Zeichen.
Schreib einfach die SendPipeMessage um, sodaß Du dort (Unicode- oder Ansi-)Strings übergibst. In der Routine selbst nimmst Du die notwendigen Konvertierungen vor, um der WinAPI-Funktion die richtigen Parameter zu übergeben. |
Re: Arbeiten mit Pipes
Versuche es mal mit
Delphi-Quellcode:
PAnsiChar(AnsiString(unicode_string))
Axel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz