![]() |
String Konvertierung!?
Hi,
irgendwie verstehe ich die Fehlermeldung nicht: [Fehler] Unit1.pas(101): Konstantenausdruck erwartet
Code:
# + t muss so sein weil es das gleiche sein soll wie z.B. #255.
procedure TForm1.SX1Click(Sender: TObject);
var s, t: string; i: integer; begin s := #254#1; for i := 0 to 1 do begin t := IntToStr(i); s := s + (# + t) + #255; //Bei der Raute in der Mitte ist das Problem. ComPort.WriteStr(s); end; end; |
... nutze doch einfach chr(t).....
Grüße, Daniel |
Hallo Daniel,
# ist kein gültiges Zeichen, wenn es allein steht. Du solltest nicht (# + t) sondern Chr(t) verwenden. |
eigentlich chr(i). Weil t ja ein String ist. t bleibt also ganz weg.
Trotzdem geht das ganze nciht so wie ich es mir gedacht habe. Ich möchte folgendes an die Serielle schicken: #254#1#0#255 #254#1#1#255 #254#1#2#255 Irgendwie stimmt da was nicht. Mit dem Code. |
Hallo Daniel B,
dann muss deine Schleife aber bis 2 laufen :mrgreen: |
Das ist schon Klar. :roll: Wenn funktioniert sogar bis 102. Zum Testen langt mir aber 1 oder 2.
Es geht also von: #254#1#0#255 #254#1#1#255 . . . #254#1#102#255 |
Hallo Daniel B,
außerdem erweiterst du s bei jedem Schleifendurchlauf. Du must also die Zuweisung s := #254#1 in die Schleife mit aufnehmen!
Code:
Edit: Code hinzugefügt
procedure TForm1.SX1Click(Sender: TObject);
var s: string; i: integer; begin for i := 0 to 1 do begin s := #254#1+Chr(i)+#255; ComPort.WriteStr(s); end; end; |
Code:
Damit gehts. Vielleicht kann mir einer erklären warum es mit Hex geht, aber mit Ascii nicht. Danke.
procedure TForm1.SX0Click(Sender: TObject);
var s, t: string; i: integer; begin s := #254#0; for i := $80 to $E7 do //<--- Hier #128 to #231 Nicht möchlich. Trotz Konvertierung. begin t := s + Chr(i) + #255; ComPort.WriteStr(t); end; end; |
Hallo Daniel B,
der Schleifenindex erwartet ja eine Zahl, wie 128 oder $80, aber nicht #128, was als Character interpretiert wird, dessen interne Darstellung 128 ist. Du musst also das # an dieser Stelle weglassen. |
#128 bezeichnet einen Character ('Ç') und diesen kannst Du keiner Integer-Laufvariablen zuweisen. Wenn Du das Schweinegatter ... ich meine ... die Raute ... weglässt, dann müsste es sehr wohl funktionieren.
Grüße, Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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