Deutsch
Forum

Erledigt: Escapesequenzen: Was passiert mit dem String

 

E.T.
Hallo an alle,
in diesem kleinem Prog passiert bei mir folgendes:
Versuch 2 ergibt als Ausgabe: String 2 : IcineinePfad-Angabe
Versuch 3 ergibt als Ausgabe: String 3 : IchwillucheinePfad-Angabesein!!
KompilierenMarkierenSeparieren
 {$IQ}

Proc XPath

    Parameters x_PfadInput$
    Declare x_PfadOutput$
    Clear x_PfadOutput$

    While @Len(x_PfadInput$)

        x_PfadOutput$ = x_PfadOutput$ + @Left$(x_PfadInput$,1)
        Case @Left$(x_PfadInput$,1) =  : x_PfadOutput$ = x_PfadOutput$ +
        x_PfadInput$ = @Del$(x_PfadInput$,1,1)

    EndWhile

    Return x_PfadOutput$

EndProc

Declare Text$
cls
Text$ = C:ProgrammeProgrammXYZUVZ1Programm.exe
print 1. Versuch
print String 1 : ,Text$
print =============================================================
print String 1 zurück : , XPath (Text$)
print =============================================================
Print
print 2. Versuch
Clear Text$
Text$ = IchineinePfad-Angabe
print String 2 : ,Text$
print =============================================================
print String 2 zurück : , XPath (Text$)
print =============================================================
Print
print 3. Versuch
Clear Text$
Text$ = IchwillaucheinePfad-Angabesein!!
print String 3 : ,Text$
print =============================================================
print String 3 zurück : , XPath (Text$)
print =============================================================
Print
print 4. Versuch
Clear Text$
Text$ = >>>Ich bin ein ganz normaler String<<<
print String 4 : ,Text$
print =============================================================
print String 4 zurück : , XPath (Text$)
print =============================================================
Print
Print WAS PASSIERT IM 2. UND 3. VERSUCH MIT DEM STRING ???
waitinput
end

Wo sind denn meine Buchstaben / Zeichen aus in der Var Text$ hin ??

Mario
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
19.03.2008  
 



Escapesequenzen beachtet?
 
19.03.2008  
 




E.T.
Ein String in sollte doch ein String bleiben, oder ???
Wenn das z.B. bei der Rückgabe von @ChooseDir$(S) passiert , das genau die Folge von Zeichen im Rückgabestring steht, was dann ??

Mario
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
19.03.2008  
 




Sebastian
König
Hallo Mario,

In XProfan und vielen anderen Programmiersprachen ist es üblich, dass durch einen Backslash in Literalen (und nur dort, nicht in String-Variablen und Funktions-Rückgaben) spezielle Sonderzeichen dargestellt werden, z.B.
für einen Zeilenumbruch. Eine genau Liste findest Du in der XProfan-Hilfe unter Escape-Sequenzen.

Kurz: Wenn Du einen Backslash möchtest, immer \ schreiben...

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
19.03.2008  
 




E.T.
Was mache ich dann mit der Rückgabe von z.B. @ChooseDir$(S) (da ists mir heute aufgefallen) ?? Das ist ein String mit nur einfachen Backslashs, welchen ich ja in einer
Variablen (XYZ$) speichern muß, um diese weiter zu verarbeiten.

Mario
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
19.03.2008  
 



@Mario


Was mache ich dann mit der Rückgabe von z.B. @ChooseDir$(S) (da ists mir heute aufgefallen) ?? Das ist ein String mit nur einfachen Backslashs, welchen ich ja in einer
Variablen (XYZ$) speichern muß, um diese weiter zu verarbeiten.


Verdopple ihn mit text$=Translate$(text$,,\)
 
19.03.2008  
 




RGH
Horst Horn
@Mario

Horst Horn
Was mache ich dann mit der Rückgabe von z.B. @ChooseDir$(S) (da ists mir heute aufgefallen) ?? Das ist ein String mit nur einfachen Backslashs, welchen ich ja in einer
Variablen (XYZ$) speichern muß, um diese weiter zu verarbeiten.


Verdopple ihn mit text$=Translate$(text$,,\)


FALSCH! (Oder zumindest überflüssig, da Deine Zeile genau Nichts bewirkt!)
Der doppelte Backslash ist nur in LITERALEN notwendig, um einen eifachen Backslash darszustellen, wie Sebastian ja schon eindeutig in Übereinstimmung mit der XProfan-Hilfe erklärt hat. Also nur wenn im Programmtext ein Backslash zwischen zwei Anführungszeichen (also in einem Stringliteral) vorkommt, ist er (der Backslash) durch zwei zu ersetzen, da er sonst als Escapezeichen interpretiert wird.

Bei Pfadangaben darfst Du übrigens, um die Backslash-Problematik zu umgehen, auch den normalen Slash (/) verwenden. Das Betriebssystem kommt damit genau so klar.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
19.03.2008  
 




E.T.
Hm,
und wenn ichs so nach Horst mache:
KompilierenMarkierenSeparieren
dann habe nur einfache s in Pfad1$ stehen. Und somit immer noch das gleiche Problem.

Mario
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
19.03.2008  
 




E.T.
AHA,

wenn ich den Pfad per Hand eingebe, wird er, wenn er nur einfache s hat, verdreht.
Jetzt habe ich mir eben mal den Pfad C:IchineinPfad angelegt, dies mit ChooseDir$ abgefragt und anzeigen lassen (wie obendrüber), dann wirds nicht verdreht.
Obwohl beideErgebnisse ja ein StringLiteral sind.

Naja, warum auch immer, wieder was gelernt....

Danke an alle
Mario
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
19.03.2008  
 




E.T.
Irgendwie scheint mein @Translate$ heute gar nix machen zu wollen....

Aber langsam dämmerts, auch wenns lang gedauert hat: Eine Ergebniss von z.b.
@chooseDir$(... ist ja das Erg. einer Funktion, darum stehts richtig da.

Wenn ich dieses Erg. jetzt mit Translate umwandeln will, z.B. um es in einer INI zu speichern und später wieder aufzurufen, geht das nicht. Aber das wird auch noch....
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
19.03.2008  
 



@Roland


FALSCH! (Oder zumindest überflüssig, da Deine Zeile genau Nichts bewirkt!)


So FALSCH! kann das gar nicht sein
Ich widerspreche Dir ungern, aber wenn ich früher (weiss nicht mehr, unter welcher Version) einen Pfad in einer INI-Datei normal abgespeichert hatte, bekam ich dann bei Benutzen des Pfades (COPY, LOAD oder Ä. Fehlermeldungen - Kann Datei nicht laden oder Kann Datei nicht kopieren) - Damals hab ich mir angewöhnt, alle Pfade mit TRANSLATE$( ) mit doppelten Backslash in die INI-Datei zu schreiben. Das mag nicht elegant sein oder vielleicht auch nicht mehr nötig. Aber es funktioniert! Die doppelten Backslash tun keinem weh, im Zeitalter von riesigen RAM-Speichern und GB-Speichersticks spielen auch ein paar Zeile mehr Code keine Rolle und langsamer wird das Programm auch nicht. Das immer wieder Überraschungen auftauchen, an denen XProfan nicht schuld ist, hab ich gestern im PROFAN-Forum gelesen. Unter VISTA wird das Startbild nicht mit LoadBmp... geladen !? - Rolf (stolzer VISTA-Benutzer) bestätigt das und schreibt, nach einem doppelten Loadbmp... direkt hintereinander klappt es. Also auch eine Fehlfunktion, die nichts mit XProfan zu tun hat - Ich bin kein Genie und quäle mich manchesmal durch meinen Quelltext, da mir grundlegendes Wissen in meinen jungen Jahren nicht vermittelt wurde. Chefprogrammierern hier in der Community kann ich niemals das Wasser reichen, aber meine Programme laufen auf unterschiedlichen Systemen und bisher hab ich (auch mit Hilfe aller) möglichst alle Fehlermeldungen umschifft. Das text$=TRANSLATE$(text$,,\) wird auch weiterhin in meinem Code stehen. So FALSCH! kann es nämlich nicht sein -
Sorry für den langen Text - aber schließlich heiße ich ja auch Horn

[offtopic]PS: Das soll keine Drohung sein !
Ostern wird PASS-PORT 2.0 hier hochgeladen. Da in der Version die Daten je nach Wunsch auf einen beliebigen Speicherplatz kopiert werden können, ist hier natürlich auch ChooseDir$ in Benutzung. Die Zielwege werden alle mit Translate....
eingetragen und es funktioniert ![/offtopic]
 
20.03.2008  
 




Sebastian
König
@Horst: Dein Translate-Aufruf bewirkt tatsächlich nichts, da er die Backslashes eben nicht verdoppelt! Der folgenden Code demonstriert dies:
KompilierenMarkierenSeparieren
cls
var s1$ = C:\test\hallo
var s2$ = TRANSLATE$(s1$,,\)
print Alt:, s1$
print Neu:, s2$
waitkey
end

Erklärung: Beide Strings, sowohl als auch \, stellen nur einen einfachen Backslash dar, das ganze ist also nur ein Aufruf der Art text$=TRANSLATE$(text$,A,A)... Denn: \ ist völlig korrekt ein Backslash, allerdings auch, weil XProfan bei unbekannten Escape-Sequenzen nicht meckert sondern nur den Backslash stehen lässt....

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
20.03.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.493 Betrachtungen

Unbenanntvor 0 min.
H.Brill08.05.2023
Walter26.12.2022
Member 361000501.12.2022
RudiB.17.09.2022
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie