AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeiten mit Pipes

Ein Thema von Digielm · begonnen am 10. Aug 2009 · letzter Beitrag vom 11. Aug 2009
Antwort Antwort
Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#1

Arbeiten mit Pipes

  Alt 10. Aug 2009, 14:37
Hallo Leute,

ich hab da ein riesen Problem diese Funktion klappte unter Delphi 2006 ohne Probleme:
Delphi-Quellcode:
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;
Nach der Umstallung auf Delphi 2009 bekomme ich den Message mit div \0 .. zurück also keinen richtigen Stringmehr.
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.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Arbeiten mit Pipes

  Alt 10. Aug 2009, 14:46
Hallo Digielm,

wie schaut es denn aus wenn Du den Prozedurkopf so änderst?

procedure SendPipeMessage(lpvMessage: PAnsiChar); Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Arbeiten mit Pipes

  Alt 10. Aug 2009, 15:47
OK danke für den Tip

Bin ja auch saudoof hätte ich eigentlich selber drauf kommen müssen.

Danke nochmals
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Arbeiten mit Pipes

  Alt 10. Aug 2009, 16:08
dann aber natürlich auch strlenA verwenden
$2B or not $2B
  Mit Zitat antworten Zitat
Digielm

Registriert seit: 2. Aug 2006
246 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Arbeiten mit Pipes

  Alt 10. Aug 2009, 16:13
ALso strlenA kennt mein Delphi nicht

und wenn ich
SendPipeMessage(pansichar(String)); schicke kommt immer nur das 1. Zeichen mit

bzw so
Delphi-Quellcode:

message := Pansichar('123456');
klappt nur wenn ich das no mache gehts nicht
Delphi-Quellcode:
var
uebergabestring : String;

message := Pansichar(uebergabestring);
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Arbeiten mit Pipes

  Alt 10. Aug 2009, 17:47
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Arbeiten mit Pipes

  Alt 11. Aug 2009, 09:59
Versuche es mal mit

PAnsiChar(AnsiString(unicode_string))

Axel
Alexander Lang
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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