Deutsch
Forum

Erledigt: Escapesequenzen: Was passiert mit dem String

 
- Seite 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
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  
 



 
- Seite 2 -



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) für so ziemlich alles genutzt was Zeichenketten beschreibt, das kann natürlich 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 für 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 (
)

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 für 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-Datei) 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 anzeigen zu können. Sie nahmen das und definierten, das dieses in Kombination mit anderen Zeichen für derartige Codes steht. Und so steht dann also für das Zeichen mit dem Code 9, dem Tabulatorzeichen. Das steht also nur für ein Zeichen. Da man nun das selbst nicht mehr darstellen kann, wurde ebenso definiert, dass ein doppeltes nun für ein einfaches steht. Mehr 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.)

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
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 über 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 über 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 könnte dann notfalls immer noch auf Delphi (zurück)umsteigen.

Gruß
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 natürlich 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 Programmierung!
 
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. vermutlich 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-Hilfe 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 für 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 natürlich 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 für 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 für 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 Programmierung!


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 Forum behauptete, daß XProfan nach wie vor weltweit die am meisten abwärtskomatibelste Programmiersprache ist!

Meiner Meinung nach sollte das auch noch möglichst 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 für 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 erhöht, 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 ...

Gruß
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  
 



 
- Seite 3 -



Dietmar
Horn
Nicht nur ich kann offensichtlich zwischen den Zeilen lesen
 
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  
 




Jörg
Sellmeyer
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


Ist doch schön, wenn man weiß, welche Knöpfe man drücken muß
Ich finds ja auch klasse, daß Roland immer Kompromisse findet. Trotzdem finde ich diese Umänderungen gut, da die Sprache nur durch Veränderungen modern bleibt und aktuellen Anforderungen gerecht werden kann. Z.B. diese Ganzen CreateDieses, CreateJenes als eigene Funktionen für jedes einzelne Control zu haben, fände ich sehr umständlich und eher Nutzerunfreundlich.
So ist es leicht zu merken und für Roland auch leicht zu erweitern.
Wenn da jemand mit einer kostenlosen Programmiersprache etwas ins trudeln kommt, wenn er seine Quelltexte hinterher etwas anpassen muß, ist es mir, gelinde gesagt, wurscht. Programmieren macht man´schließlich nicht, weil man den Gedankenstillstand pflegen will, sondern weil das Denken und Umdenken Spaß macht.
Und wer mir jetzt erzählt, daß er noch professionelle, aktuell beutzte, mit Profan 5 erstellte Programme zu hause auf dem Rechner hat, sollte sich mal Gedanken über seine Bereitschaft, sich mit Neuem auseinanderzusetzen, machen.
Um noch mal auf den Backslash zurückzukommen:
In einer Textverarbeitung dürfte es nicht länger als eine Viertelstunde dauern, jedes beliebige Programm an den doppelten Backslash anzupassen. Und für Anfänger ist es sicher leichter sich eine mögliche Syntax anzugewöhnen als lauter man_könnte_auch_so. Und wer die Hilfe vernünftig liest, schreibt eh seit mindestens Version 4.5 (solange kenne ich zumindest Profan) den Backslash doppelt.

So jetzt habe ich auch mal einen laaangen Beitrag geschrieben.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.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.489 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