Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
14.02.2013, 09:12 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2013 09:14 von jg.)
kann mir jemand sagen wie ich einen String in das Format normal, hex oder code umwandle?
Ich verwende ein Array mit Sringcontrols mit dem Format normal, möchte jedoch gewisse Ergebnisse die ich von einem Gerät erhalte in diese Array schreiben.
In einer Spalte z.B. in hex in der anderen in Codeformat....
Wenn ich das Control an sich in ein anderes Format ändere, sind ja alle dementsprechend geändert, dies will ich ja nicht.
Wenn du ein Array of Strings hast, dann geht das nicht (wie schon so häufig hier im Forum beschrieben).
Die Eigenschaften aller Array-Elemente sind immer identisch! Die "Code" oder die "HEX" Darstellung sind nur eben nur Eigenschaften/Darstellungsformen desselben Strings.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
hier greift neben Jens' Kommentar auch der immer wieder gegebene Rat, die Datenrepräsentation im BD/VI von der auf dem FP zu trennen!
Du kannst beliebige Daten im Speicher haben. Wie du diese dem Nutzer präsentierst, ist aber davon unabhängig! Wenn du also bestimmte Daten in HEX und andere im \-Code anzeigen willst, kannst du doch eine entsprechende Routine schreiben, die diese Aufgabe übernimmt und deine Daten für den Nutzer entsprechend aufbereitet...
also wenn ich die Frage richtig verstanden habe, suchst du folgendes:
Du hast einen Eingabe String mit beliebiger Darstellung und möchtest auf drei Ausgabe Strings mit normaler Darstellung.
String 1: normale Anzeige (nimmt den String unkonvertiert auf)
String 2: code Ausgabe (enthält einen Klartext string in Code Darstellung)
String 3: Hex Auszgabe (enthält einen Klartext string in Hex Darstellung)
Da ich neulich ein ähnliches Problem hatte, hier ein kleiner Lösungsvorschlag
String 1:
Das sollte klar sein, einfach den Eingabe String übergeben.
String 2:
Schritt für Schritt jedes Sonderzeichen suchen und ersetzen:
alle " " durch "\s", alle "Zeilenumbruch" durch "\n" und so weiter
String 3:
Der komplizierteste Weg. Du konvertierst deinen String in ein Array von unsigned Byte. Dieses Array geht in eine for Schleife und konvertiert die Zahl in einen Hex String.
Um das Ganze fortlaufend zu erhalten, musst du ein Schieberegister einfügen, welches mit einem leeren String initialisert wird und anschließend hinten immer den Hex String anfügt.
Den Ausgang des Schieberegisters packst du auf die Ausgabe.
Alles klar? Dann viel Spaß mit dem angehängten Vi
Gruß
Stefan
Wenn du willst, dass es funktioniert, bau es größer.
Wenn du willst, dass es gleich funktinoiert, bau es gleich größer!
14.02.2013, 09:51 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2013 09:55 von GerdW.)
ah, okay. Ich verstehe das mit dem String - Array - Convert - Concatenate. Das macht durchaus Sinn so.
Was die Anzeigeformate angeht, das finde ich jetzt gut zu wissen (ich habe mich schon öfter gefragt, wie man das zur Laufzeit macht), aber das löst nicht das Problem. Es ging ja darum, in einem Array von String alle 3 Formate auszugeben. Darum der Weg alle tatsächlich zu konvertieren.
Oder kann man das, was auf dem Display im String erscheint auch wieder "falsch" (nämlich so wie es kodiert ist) einlesen?
Gruß
Stefan
Wenn du willst, dass es funktioniert, bau es größer.
Wenn du willst, dass es gleich funktinoiert, bau es gleich größer!
Zitat:Es ging ja darum, in einem Array von String alle 3 Formate auszugeben. Darum der Weg alle tatsächlich zu konvertieren.
Ich würde es so ausdrücken: Es ging darum, Daten aus einer Datenstruktur/-speicher für die Anzeige auf dem FP aufzubereiten. Darum das konvertieren...
Zitat:kann man das, was auf dem Display im String erscheint auch wieder "falsch" (nämlich so wie es kodiert ist) einlesen?
??? Wie meinst du das?
"falsch"/"wie es kodiert ist" einlesen?
Die Property Text.Text gibt dir genau das als String, was auf dem Control/Indicator angezeigt wird. Also z.B. bei Hex-Anzeige inklusive Spaces nach jeweils 4 Hexziffern. Ob das für den gewünschten Einsatzfall erforderlich ist, muss der OP entscheiden. Es wäre nur ein weiterer Weg, Daten in die entsprechende Darstellung zu bringen. (Auch wenn der Weg über Propertynodes eher langsam ist, da er viele Threadwechsel erzwingt: Man sollte das nicht für eine Tabelle mit 1000en Einträgen machen...)
(14.02.2013 10:17 )GerdW schrieb: ??? Wie meinst du das?
"falsch"/"wie es kodiert ist" einlesen
Die Property Text.Text gibt dir genau das als String, was auf dem Control/Indicator angezeigt wird. Also z.B. bei Hex-Anzeige inklusive Spaces nach jeweils 4 Hexziffern.
Das meinte ich so, wie ich es geschrieben habe (mennoooo, nie versteht mich wer ).
Also, ich nehme eine String Steuerung und schreibe hier "abc" rein. Das ganze lasse ich mir in einer String Anzeige als Hex darstellen. Dort steht "6162 63" drin.
Aber die Eigenschaft "Text.Text" der String Anzeige liefert mir dann wieder "abc".
Wenn ich es "falsch auslesen" würde (aus der Eigenschaft) müsste dort "6162 63" stehen. Das meine ich.
Ich hab hier gerade Lv 7.1, evtl. spielt das auch eine Rolle.
Gruß
Stefan
Wenn du willst, dass es funktioniert, bau es größer.
Wenn du willst, dass es gleich funktinoiert, bau es gleich größer!
die Property "Text.Text" sollte dir genau das liefern, was gerade in der String-Anzeige dargestellt wird. Deshalb ja das Umschalten des Anzeigemodus, gefolgt vom Auslesen wie in meinem Bild oben.
Ich kann das Verhalten mit LV7.1 mangels dieser alten Version nicht überprüfen. Vielleicht machst du mit LV8.5 noch einen Gegencheck?