Italia
Foro

Erledigt: Escapesequenzen: Was passiert mit dem String

 
- Page 1 -



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
./../../references-fonction/xprofan/end/'>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  
 



 
- Page 2 -



Jörg
Sellmeyer
Ich glaube der Begriff Literal wird nicht von allen gleich interpretiert:
Ein Literal ist nur ein im Quellcode vorkommender ausgeschriebener String in Anführungszeichen. Im Grunde ist es egal, ob es eine Pfadangabe ist oder einfach nur der Name Otto.
Aber hauptsächlich in Pfadangaben gibt es Probleme, da dort der Backslash vorkommt und dann die Escape-Sequenzen erzeugt.
Eine Rückgabe mit ChooseDir ist kein Literal sondern einfach ein String. Es gibt keine Escape-Zeichen darin.
Wenn aber im Programm steht:
Verz$ = C:
iealleszeigen
hat man gleich drei Escapesequenzen drin:
= Zeilenumbruch, a = Alarm/Tonsignal, z = Nullbyte.
Auch ein Upper$(C:
iealleszeigen) bringt nix, da die Escape-Sequenzen vor ausführung des Quellcodes ausgewertet werden.
Selbst Translate$(C:
iealleszeigen,,\) nicht, da per Profan eben gar keine Backslash vorhanden sind.
Es gibt zwei Möglichkeiten, das Problem zu umgehen:
Alles (oder zumindest den Buchstaben nach dem Backslash) großschreiben:
C:NieAlleseigen
oder (ist noch besser und sollte man sich grundsätzlich angewöhnen - schließlich kann keiner voraussagen, welche Escape-Sequenzen noch dazu kommen):
C:\nie\alles\zeigen

Und hier nochmal alles zum Testen:
KompilierenMarkierenSeparieren
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
20.03.2008  
 



Stringkonstante
 
20.03.2008  
 




E.T.
Holla,
ist ja richtig interessant geworden, meine kleine Frage.

Also wenn ich das jetzt richtig verstanden habe, brauche ich mir bei irgendwelchen Pfaden, welche im laufenden Programm gelesen werden, keine Gedanken machen (richtig, Jörg ?). Ich habe bis jetzt auch immer versucht, alles z.B. in der INI mit doppelten s zu speichern (so wie Horst, da mir das bei Pfaden aus Inis auch passiert ist). Und da das Translate eben nicht immer translaten wollte, habe ich mein Proc XPath (siehe ganz am Anfang) genutzt. Das macht IMMER aus einem dann \ (zumindest bis jetzt).
Ich denke auch, der doppelte \ kann nicht schaden.

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...
20.03.2008  
 



Mario Patzlaff
Holla,
ist ja richtig interessant geworden, meine kleine Frage.

Also wenn ich das jetzt richtig verstanden habe, brauche ich mir bei irgendwelchen Pfaden, welche im laufenden Programm gelesen werden, keine Gedanken machen (richtig, Jörg ?).


Korrekt! Der Begriff String (Zeichenkette) wird (leider) per so ziemlich alles genutzt was Zeichenketten beschreibt, das kann naturalmente ein Quell von Fehlern sein.

Laienhaft ausgedrückt ist der Programmtext von den Escapesequenzen betroffen, denn nur im Programmtext* können Stringkonstanten vorkommen. (*ist nicht ganz korrekt, kann man imho aber momentan per XProfan so gelten lassen)

Wird ein String ermittelt/erzeugt (also zur Laufzeit vom Programm generiert/verarbeitet) dann ist es auch keine Konstante mehr, also wird der Kompiler auch nachträglich keine Umwandlungen mehr vornehmen können - Backslash bleibt also Backslash.
KompilierenMarkierenSeparieren
(\n) ist gleich (+n) ist ungleich (
)e>

Slash als Ersatz bei Pfadangaben kann man gelten lassen, aber empfehlen würde ich es dennoch nicht. Besser ist es zu verinnerlichen, dass man \ schreiben sollte wenn man ein einzelnen Backslash meint, und das hat auch spätestens dann seinen Grund wenn man bedenkt das ein String möglicherweise später auch noch manipuliert werden will - man dann also - wenn man Slashes statt BackSlashes verwendet hat - ein Problem mehr hat - statt eins weniger.

Ich bin mir sicher nun per mehr Verwirrung gesorgt zu haben als es ohnehin schon gibt zum Thema.
 
20.03.2008  
 




RGH
Noch einmal:

Bei den Escape-Zeichen geht es ausschließlich um Literale im Programmtext, also da, wo der Backslash zwischen zwei Anführungszeichen auftaucht! Nur dort im Programmtext (also der prf-File) sollte ein Backslash durch einen doppelten Backslash dargestellt werden. Und sonst nirgendwo, auch nicht in INI-Dateen oder sonstwo. Alles Andere ist von Übel! (Es verhält sich hier mit den Escapezeichen genauso wie in allen anderen Sprachen, die diese benutzen, wie z.B. C, C++, Java, ...)

Was ist der Hintergrund: Es geht hier darum, im Programmtext Zeichen darstellen zu können, die normalerweise nicht dargestellt werden können, wie z.B. das Alarmzeichen (chr$(7)) oder das Tabulatorzeichen (chr$(9)). Um derartige Zeichen darzustellen, kamen seinerzeit irgendwelche klugen Leute auf die Idee, ein selten benutztes Zeichen zu verwenden, um derartige Mostra zu können. Sie nahmen das und definierten, das dieses in Kombination mit anderen Zeichen per derartige Codes steht. Und so steht dann also per das Zeichen mit dem Code 9, dem Tabulatorzeichen. Das steht also nur per ein Zeichen. Da man nun das selbst nicht mehr darstellen kann, wurde ebenso definiert, dass ein doppeltes nun per ein einfaches steht. Di più ist nicht dahinter. Das ist alles.

Es ist doch ganz einfach: Einfach überall da, wo direkt im Programmtext,im Editor, in einem Literal (also in einem Text zwischen zwei Anführungszeichen) ein Backslash sein soll, ihn mittels zweier Backslash darstellen.

(Vermutlich war mein Fehler bei der Implementierung, dass ich ein einzelnes Backslash auch dann als Backsdlash interpretiere, wenn das nachfolgende Zeichen kein gültiges Ersatzzeichen ist. Andere Programmiersprachen erzeugen dann eine Fehlermeldung. Was eigentlich der Kompatibilität zu Versionen vor Einführung der Ersatzzeichen diehte, trug wohl eher zur Verwirrung bei.)

Saluto
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
20.03.2008  
 




Jörg
Sellmeyer
Wahrscheinlich wird Dietmar laut aufheulen und wieder ein meterlanges Posting schreiben, aber von mir aus kannst Du die einfachen Backslash ruhig kicken und nur noch doppelte erlauben
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
20.03.2008  
 




Dietmar
Horn

aber von mir aus kannst Du die einfachen Backslash ruhig kicken und nur noch doppelte erlauben


Sowas kann eigentlich nur jemand von sich geben, der selber

1. immer circa die aktuellste XProfan-Version verfügt,

2. noch nie in seinem Leben blutigen Programmieranfängern das Programmieren mit älteren XProfan-Version beigebracht hat, und der

3. wahrscheinlich auch noch nie an größeren eigenen Projekten gearbeitet und diese noch nie circa mehrere Jahre bzw. XProfan-Versionen hinweg gehegt und gepflegt hat.

Wenn die Punkte 1. bis 3. nicht wären, dann wäre mir das ständige Rumgejaule wegen der ganzen Befehls-Abschafferei auch schnurzpiepegal, denn persönlich besitze ich sowieso immer die jeweis aktuellste XProfan-Version (und das schon seit Profan² 3.3). Ich käme notfalls auch damit zurecht, wenn Roland fast alle XProfan-Befehle killen würde und nur noch die API-Aufrufe übrigläßt - bzw. ich potuto dann notfalls immer noch auf Delphi (zurück)umsteigen.

Saluto
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
20.03.2008  
 



Tjo, die Sache ist nur das wohl bei grad mal zur Zeit höchstens 0.000000000000000000001% aller Mitglieder die Punkte 1 bis 3 zutreffen. (Du bist da naturalmente längst nicht mitgezählt!)

Also ganz schön egoistisch die Restlichen ca. 99% mit Altertum zu quälen...

Aber ich vertrete ja eh die Meinung das wer ein Profan5-Programm pflegen möchte - er es mit Profan5 pflegen sollte, oder an eine neue Version ANPASSEN sollte wenn er eine neuere XProfan-Version nutzen möchte.

...denn sowas gehört seither ebenso zur Programmazione!
 
20.03.2008  
 




Sebastian
König
RGH
(Vermutlich war mein Fehler bei der Implementierung, dass ich ein einzelnes Backslash auch dann als Backsdlash interpretiere, wenn das nachfolgende Zeichen kein gültiges Ersatzzeichen ist. Andere Programmiersprachen erzeugen dann eine Fehlermeldung. Was eigentlich der Kompatibilität zu Versionen vor Einführung der Ersatzzeichen diehte, trug wohl eher zur Verwirrung bei.)


Also ich habe mir vorhin überlegt, dass ich dem ProfanInspector in der nächsten Version beibringen werde, bei nicht erkannten (i.e. presumibilmente nicht als solche gedachten) Escape-Sequenzen eine Warnmeldung auszugeben... Im Zug habe ich damit gerade schonmal begonnen...

MfG

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




E.T.
So, ich denke, jetzt habens alle (auch ich) begriffen. Bei diesen tollen Erklärungen von Roland und allen Anderen muß man es ja begreifen.
In der XProfan-Aiuto steht ja auch man soll im Quelltext immer \ schreiben, wenn man einen meint (aber wer macht schon immer, was er sollte...).
Super finde ich, das sogar noch Anregungen per Programmverbesserungen oder Erweiterungen rausgekommen sind.

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...
20.03.2008  
 




Dietmar
Horn

Tjo, die Sache ist nur das wohl bei grad mal zur Zeit höchstens 0.000000000000000000001% aller Mitglieder die Punkte 1 bis 3 zutreffen. (Du bist da naturalmente längst nicht mitgezählt!)


Hallo David,

falls Deine Schätzung wirklich zutreffen sollte (was ich stark anzweifeln möchte), dann wäre das ja noch viel schlimmer als ich bisher dachte. Du solltest bei einer solchen Sache nicht immer ausschließlich von Dir, Deinem professionellen Programmiererwissen und Deinen finanziellen Möglichkeiten ausgehen.

Ansonsten möchte ich das hier nicht weiter ausbauen, denn dazu hatte ich in mehreren kilometerlangen Postings an anderen Stellen ausführlicher als so manch einer der zahlreichen Abschafferei-Befürworter wiederholt meine Meinung gepostet. Bis jetzt konnte mir diese jedenfalls noch nicht nachvollziehbar und plausibel widerlegt werden.

An dieser Stelle auch mal ein riesengroßes Dankeschön an Roland dafür, daß er nach einigen Fehlversuchen stets drangeblieben ist und auch XProfan 11 abwärtskompatibel bis Profan² 6.6 hinbekommen hat! Wenn das auch bei zukünftigen XProfan-Versionen (mindestens von der jeweils atuellen Freeware- bis zur aktuellen Vollversion so bleibt, dann wäre ich der Letzte, der gegen irgendwelche Abschaffereien wettern würde.

In meinen Kursen verwende ich aktuell XProfan 8.0, und gerade bin ich da bei dBase-Datenbanken angelangt (Der xprofane Start per diese Schüler war 09/2007 gewesen, mit 2-3 Wochenstunden Kurs, plus MMJ-Freitagstreff mit individuellen Projektarbeiten, usw.).

Daß ich selber dabei ständig zweigleisig fahren muß (zB. dBGet$... <-> db(get ..., usw.) das geht ja noch und ist ausschließlich mein Problem. Obwohl ich mit den alten Befehlen großgeworden bin und bei meinen eigenen Projekten weitestgehend die aktuelle Syntax bevorzuge, verplappere ich mich an der Tafel dbzgl. inzwischen nur noch selten. Wenn sich ein XProfan-8-Anfänger als Schüler nach 1 - 2 Jahren die Euronen per z.B. XProfan 11 vom Taschengeld zusammengespart hat, muß er doch zwangsläufig aus allen Wolken fallen, wenn dann in seinen bisherigen Codes so gut wie nichts mehr funktioniert (falls Roland nicht immer soviel zusätzlichen Aufwand betrieben hätte, um die Abwärtskompatibilität gewährleisten zu können).


...denn sowas gehört seither ebenso zur Programmazione!


Das ist meiner Meinung nach mehr oder weniger nur eine Art Scheinbehauptung - um nicht gar zu sagen Biertisch-Geschwätz.

Daß beim Aufstieg eines BS von 16 auf 32 Bit (und demnächst von 32 auf 64 Bit) bestimmte ältere Sachen in einer aktuellen Programmiersprache zwangsläufig keinen Sinn mehr ergeben, das steht doch völlig außer Frage.

Roland hat schon völlig recht, wenn er an anderer Stelle hier im Foro behauptete, daß XProfan nach wie vor weltweit die am meisten abwärtskomatibelste Programmiersprache ist!

Meiner Meinung nach sollte das auch noch possibile lange so bleiben - besonders im Interesse der Programmieranfänger, die in der Regel mit der Freewareversion beginnen.

Nochmals zum Mitmeißeln:

Für meine eigenen XProfan-Projekte benötige ich diese Abwärtskompatibilität nicht unbedingt. Soviel Ahnung von der Materie habe ich selber, daß ich mir meinen Krempel notfalls selber anpassen kann. Doch die o.g. Zielgruppe kann diese Ahnung nach 1 - 2 Jahren keinesfalls haben - und vor allem per diese XProfaner setze ich mich hier mit meinen Anti-Abschafferei-Kilometer-Postings ein!


Also ganz schön egoistisch die Restlichen ca. 99% mit Altertum zu quälen...


Das ist doch schon wieder nur Waschweiber-Geschwätz (diesmal jedoch von Dir und ausnahmsweise mal nicht von mir) ...!

Wer will hier denn wen mit Altertum quälen? Ich bestimmt nicht und Roland garantiert ebenfalls nicht!

Falls Roland seinen bisherigen Prinzipien treu bleibt und veraltete Befehle noch nicht gleich abschafft, sondern intern beibehält und diese nur in der aktuellen Hilfedatei nicht mehr erwähnt - genauso so wie bisher - dann könnten wir doch alle vernünftig damit leben und hätten jetzt schon den xprofanen Programmierer-Himmel auf Erden, oder? In dem Maße, in welchem Roland nach und nach die Versionsnummer der Freewareversion aumento, kann er die in der jeweiligen Freewareversion noch enthaltenen eigentlich überflüssigen Befehle nach und nach endgültig aus der aktuellen Vollversion ermorden.

Doch mit der Bumskeule von heute auf morgen das Altertum abschaffen zu müssen, so wie ständig von irgendwelchen Jung-Spunden in ihren hier mit wenig Nachdenken und Hintergrundwissen hingeposteten Worten, würde Roland sich bzgl. der weiteren Vermarktung seines XProfan mittelfristig garantiert mehrere Eigentore schießen - Wetten, dass?

Ich würde mich sehr freuen, wenn nun auch Jörg endlich mein eigentliches Anliegen geschnallt hätte ...

Saluto
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
20.03.2008  
 



Hast meine Polemik als Aufhänger genutzt, aber ich glaube ich meinte etwas anderes.
 
20.03.2008  
 




Answer


Topictitle, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.591 Views

Untitledvor 0 min.
H.Brill08.05.2023
Walter26.12.2022
Member 361000501.12.2022
RudiB.17.09.2022
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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