Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Steuerzeichen im String (https://www.delphipraxis.net/181602-steuerzeichen-im-string.html)

Alex_ITA01 28. Aug 2014 09:49

Steuerzeichen im String
 
Hallo zusammen,
ich stehe grad bisschen auf dem Schlauch...

Ich möchte einen String haben, der inhaltlich so aussieht:

MyStr = #02#04#41#01#80#01HalloWelt

Ich habe jetzt zwei Varianten:

Delphi-Quellcode:
Str := #02 + 
       #04 +
       #41#01 +
       #80#01 +
       'Hallo Welt';
Wenn ich mir im Debugger die Variable "Str" angucke, wurden die Steuerzeichen leider umgewandelt.

Variante 2:

Ich habe ein Memo, wo ich diese Zeilen im Objektinspektor in Lines.Strings eingetragen habe:

Delphi-Quellcode:
#02
#04
#41#01
#80#01
HalloWelt
Wenn ich dann folgendes mache...

Delphi-Quellcode:
Str := Memo4.Lines.Text;
Str := StringReplace(tmpStr, #13#10, '', [rfReplaceAll]);
... steht in "Str" der Inhalt auch so wirklich drinne wie ich will.

Was muss ich oben in Variante 1 machen, damit es gleich aussieht?

Grüße

Neutral General 28. Aug 2014 09:53

AW: Steuerzeichen im String
 
Was heißt denn umgewandelt? In was denn umgewandelt?

Ja gut im Debugger bekommst du für #41 ein ")" und für #80 ein "P" angezeigt.
Aber das ist keine Umwandlung, dass ist nur eine andere Darstellung.

Wenn du mal in einer Ascii-Tabelle guckst dann siehst du dass #41 dem Zeichen ")" entspricht und #80 dem Buchstaben "P". Es ist also alles richtig.

baumina 28. Aug 2014 09:53

AW: Steuerzeichen im String
 
Laut meinem Verständnis deines Anliegens käme ich auf diese Lösung:

Delphi-Quellcode:
Str := '#02#04#41#01#80#01Hallo Welt';

Alex_ITA01 28. Aug 2014 09:54

AW: Steuerzeichen im String
 
Aua, dass muss echt weh tun... Na klaro...
Danke

Sir Rufo 28. Aug 2014 09:59

AW: Steuerzeichen im String
 
Zitat:

Zitat von baumina (Beitrag 1270092)
Laut meinem Verständnis deines Anliegens käme ich auf diese Lösung:

Delphi-Quellcode:
Str := '#02#04#41#01#80#01Hallo Welt';

Der Engländer spricht hier von "nice catch" :thumb:

baumina 28. Aug 2014 10:20

AW: Steuerzeichen im String
 
Zitat:

Zitat von Sir Rufo (Beitrag 1270094)
Zitat:

Zitat von baumina (Beitrag 1270092)
Laut meinem Verständnis deines Anliegens käme ich auf diese Lösung:

Delphi-Quellcode:
Str := '#02#04#41#01#80#01Hallo Welt';

Der Engländer spricht hier von "nice catch" :thumb:

:bounce2: Ha, Glück gehabt, blindes Huhn und so ... *kicher

p80286 28. Aug 2014 10:42

AW: Steuerzeichen im String
 
Quatsch Glück,
Gedankenesen!

Aber was hat das dann noch mit Steuerzeichen zu tun?

Gruß
K-H

Sir Rufo 28. Aug 2014 10:46

AW: Steuerzeichen im String
 
Zitat:

Zitat von p80286 (Beitrag 1270101)
Quatsch Glück,
Gedankenesen!

Aber was hat das dann noch mit Steuerzeichen zu tun?

Gruß
K-H

Irgendetwas, was diesen string bekommt interpretiert die zeichenfolge
Code:
#<ziffer><ziffer>
als ein Steuerzeichen ;)

himitsu 28. Aug 2014 11:00

AW: Steuerzeichen im String
 
#80 ... alles was nicht im ASCII-Bereich liegt, dort mußt du mit der Codierung aufpassen.

PS: Bei Stringkonstanten mußt du aufpassen, denn

Delphi-Quellcode:
Str := #$0085 + #$85 + 'Hallo Welt';
Str := #$0085#$85'Hallo Welt';
85 ist nicht immer 85.

Die #$85 könnte der Compiler als ANSI verwenden und dann nach Unicode konvertieren,
während das #$0085 vom Compiler (angeblich) als Unicode erkannt wird.

Und dann kommt es noch darauf an, ob das Str ein AnsiString oder ein String/UnicodeString ist
und als was der Compiler die Konstante anlegt,
denn dabei kann es halt nochmal zum umkonvertieren kommen.


Der sicherste Weg, wo es nie umkonvertiert wird, ist bei der direkten Zuweisung eines einzelnen Chars, welcher aber entweder nach obrigem Muster (#00xx) übergeben werden sollte, oder besser doch als ordinaler Wert.
Oder am aller Besten ist es, wenn man Steuerzeichen (vorallem wo es Probleme geben könnte) eben nicht in Strings verwaltet, sondern "binär" in ByteArrays/Streams/Records/... .

Sir Rufo 28. Aug 2014 11:04

AW: Steuerzeichen im String
 
@himitsu

Das ist richtig, passt aber nun so gar nicht zum Thema.

Hier sollte eben kein Zeichen als Steuerzeichen
Delphi-Quellcode:
#80
übergeben werden sondern eine Zeichenfolge
Delphi-Quellcode:
'#80'
.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz