| |
|
|
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? |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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$,,\) |
|
|
| |
|
|
|
RGH | Horst Horn
@Mario Horst HornWas 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] |
|
|
| |
|
|
|
Sebastian König | @Horst: Dein Translate-Aufruf bewirkt tatsächlich nichts, da er die Backslashes eben nicht verdoppelt! Der folgenden Code demonstriert dies: KompilierenMarkierenSeparieren 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 |
|
|
| |
|
|