Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Named Pipes - mitlesen (https://www.delphipraxis.net/140399-named-pipes-mitlesen.html)

himitsu 17. Sep 2009 20:37

Re: Named Pipes - mitlesen
 
ReadFile + buffer[1] !

daher könnte auch ein unbestimmtes Zeichen am Ende des Strings stammen
und ein fehlendes Zeichen am Anfang des Strings :angel2:

[add]
und dann auch nicht SizeOf(Buffer), sondern High(Buffer) !
(beim ShortString gibt High den höchstmöglichen Zeichenindex und somit die Maximallänge an)

kuba 17. Sep 2009 22:21

Re: Named Pipes - mitlesen
 
Ja, tatsächlich. Jetzt hab ich die Daten komplett !

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
   buffer: shortstring;
   dw   : dword;
begin
   Timer1.enabled:=true;
   ReadFile(Pipe, buffer[1], high(buffer), dw, nil);
   buffer[0] := Char(dw);
   Memo1.Lines.Add(buffer);
end;
thanx ! :thumb:

kuba

himitsu 17. Sep 2009 22:42

Re: Named Pipes - mitlesen
 
nimm aber besser statt dem char(dw) eine der beiden Möglichkeiten
Delphi-Quellcode:
buffer[0] := AnsiChar(dw);

SetLength(buffer, dw);
bei SetLength weiß man vielleicht in jahren noch, was gemeint ist

und das mit dem AnsiChar ... nja, ab Delphi 2009 ist Char ein WideChar, aber ShortString bleibt Ansi und dann gibt es Probleme wegen dem Unicode-zu-Ansi.

kuba 17. Sep 2009 23:10

Re: Named Pipes - mitlesen
 
Zitat:

Zitat von himitsu
bei SetLength weiß man vielleicht in jahren noch, was gemeint ist

ich weiss genau was du meinst, ich hatte ungefähr 10 Jahre "Programmierpause". Inzwischen hat sich viel verändert :angel2:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
   buffer: shortstring;
   dw   : dword;
begin
   Timer1.enabled:=true;
   ReadFile(Pipe, buffer[1], high(buffer), dw, nil);
   SetLength(buffer, dw); //buffer[0] := PAnsiChar(dw);
   Memo1.Lines.Add(buffer);
end;
kuba

kuba 18. Sep 2009 20:16

Re: Named Pipes - mitlesen / event filtern
 
Hallo,

ich möchte in meinem buffer noch ein event filtern, das sieht so aus: ?C*PU00000B8F
Dabei ist ?C*PU das Event und 00000B8F die Value in HEX.

Kann mir wohl nochmal jemand auf die Sprünge helfen, mit dem buffer hab ich´s nicht so :cyclops:

kuba

himitsu 18. Sep 2009 20:31

Re: Named Pipes - mitlesen
 
String (den hast'e schon) + Delphi-Referenz durchsuchenPos und Delphi-Referenz durchsuchenCopy?

kuba 18. Sep 2009 20:37

Re: Named Pipes - mitlesen
 
ja genau, copy ...

kuba

kuba 19. Sep 2009 00:06

Re: Named Pipes - mitlesen
 
Hallo,

sch..ade, ich komm nich drauf :pale:

dies sollte doch eigentlich funktionieren:

Delphi-Quellcode:
if Pos('?C*PU',buffer) > 0 then
Edit1.Text:=copy(buffer,(pos('?C*PU',buffer)+5),8);
aber es kommt nur müll :glaskugel:

kuba


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.
Seite 2 von 2     12   

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