Aktuelle Zeit: 13.12.2018 21:40

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: ExplorerGadget: Wie Pfad ohne Filterpattern richtig angeben?
BeitragVerfasst: 16.02.2018 01:19 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Hallo,

Ich habe eine ganz doofe Frage. :mrgreen:

In der Dokumentation von PureBasic steht zum Direktory$-Parameter von ExplorerTreeGadget():

Zitat:
If no pattern is included, the directory must end with a '\'. Including no directory will display the root containing the drives. Including no pattern defaults to '*.*'. So a Directory$ of "" will display the root and set '*.*' as pattern.


Mir ist diesbezüglich in meinen Programmen ein kleines Problem aufgefallen.

Wenn ich keine Pattern nutzen möchte, muss ich als Directory z.B. "/home/usernameblabla/\" übergeben. Funktioniert soweit.

Wenn sich im Homeverzeichnis jedoch ein Unterordner mit dem Namen "\" befindet, dann lande ich in diesem. Das soll nicht passieren.

Wenn ich das abschließende "\" weglasse, dann funktioniert es trotzdem wie gewünscht. Ich nehme mal an, dass manche Linux-Distributionen dies jedoch explizit verlangen.

Wie mache ich das richtig?

Muss ich stattdessen "/home/usernameblabla/*.*" verwenden? Oder muss ich den Backslash escapen? Wozu ist der Backslash gut? :oops:

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 02:47 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
@Darksoul

/ oder \ am Ende ist bei Linux egal.

Es können aber Probleme beim Parsen von bestimmenten Sonderzeichen im String auftretten.

Z.B. bei diesem '

Dieses Zeichen im Ordername kann manchmal falsch übergeben werden und beendet an seiner Stelle den Verzeichnis-String.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 03:59 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Das ist nicht egal, da "\" auch ein Ordner sein kann. Damit kann es kein Trennzeichen sein.

/home/bla/a\b/ ist unter Linux ein gültiger Pfad, wovon "a\b" das letzte Verzeichnis ist.

Ich kenne das so:

Windows = \
Linux = /

Aber ich rede nicht von den Trennzeichen im Pfad, sondern von dem Backslash, den ExplorerTreeGadget am Ende haben möchte. Der hat IMHO nichts mit den Pfadtrennzeichen zu tun./:->

Und warum sollte ein ' den Verzeichnisstring beenden? Ein " wäre da viel problematischer, wenn der PB-Compiler das schlucken würde. Aber auch nur dann, wenn der String im Code ist. Ein ", das in einem String im Arbeitsspeicher ist, ist PB dagegen egal.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 04:24 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
:mrgreen:

Naja so einfach ist das nicht.

Es ist richtig das "\" auch ein Ordner sein kann, dieser wurde (zumindest bei mir) immer auch bei der Parameterübergabe an ExplorerTreeGadget() korrekt als Ordner ausgewerdet.

Es kann aber trotzdem eine Fehlerquelle darstellen.

Auch bei so etwas: /verzeichnis1/\/verzeichnis3\

Aber es kann je nach Parameterübergabe( versch. Input) zu Verwechselungen( falsch Interpretationen) des Apostrophe und des (einfachen) Anführungszeichens kommen. (Zeichensatzfehler)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 11:52 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Die Dokumentation ist einfach nur falsch. Die bezieht sich nur auf Windows. Unter Linux und Mac muss natürlich einfach nur ein / am Ende stehen.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 18.04.1 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 13:22 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Zitat:
Die Dokumentation ist einfach nur falsch.


Ist das wirklich sicher? Ich meine, das wäre doch mal aufgefallen. ExplorerTreeGadget() gibt es schon eine ganze Weile. :shock:

Ich habe mir dafür extra eine Methode geschrieben: "Wenn keine Pattern, dann stückel ein "\" dran" :freak: .

Zitat:
Es kann aber trotzdem eine Fehlerquelle darstellen.


Die wäre?

Zitat:
Aber es kann je nach Parameterübergabe( versch. Input) zu Verwechselungen( falsch Interpretationen) des Apostrophe und des (einfachen) Anführungszeichens kommen.


Wovon sprichst du? Als Parameter wird ein String übergeben. Ein String steht bei PB zwischen zwei ". Es ist genau definiert, wie PB einem String im Code interpretieren soll. Was sollen da für Vewechselungen stattfinden? Und ich glaube, dass man das " auch in PB per \" escapen kann (habe ich jetzt nicht versucht). Und wenn der String erstmal im Speicher ist, dann wird da auch nichts mehr geparst ooder sonstwas. Höchstens, wenn externe Programme im Spiel wären, die per Konsolenparameter aufgerufen werden. Aber das wäre ein völlig anderes Thema. :wink:

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 15:04 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
Wovon sprichst du? Als Parameter wird ein String übergeben. Ein String steht bei PB zwischen zwei ". Es ist genau definiert, wie PB einem String im Code interpretieren soll. Was sollen da für Vewechselungen stattfinden? Und ich glaube, dass man das " auch in PB per \" escapen kann (habe ich jetzt nicht versucht). Und wenn der String erstmal im Speicher ist, dann wird da auch nichts mehr geparst ooder sonstwas. Höchstens, wenn externe Programme im Spiel wären, die per Konsolenparameter aufgerufen werden. Aber das wäre ein völlig anderes Thema.


Du hast Recht, es ist ein völlig anderes Thema.

Es hat nichts mit dem ExplorerTree/List - Gadget zu tun.

Es ist einfach nur ein dämliches Kommentar von mir und kann hierbei vollkommen ignoriert werden.

Das Problem der Übergabe liegt bei mir am Auslesen von Textdateien die statt als UTF8-Codierung als "Reiner Text" ausgelesen werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 18:21 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Seit wann kann man mit utf-8 Bilder speichern? Das ist reiner Text. Meinst du Ascii? :wink:

utf-8 und Ascii unterscheiden sich erst ab dem 128. Zeichen. ', ", ´, \ und / wären von einer Fehlinterpretation nicht betroffen. <)

Selbst, wenn du einen utf-8-String versehntlich als #PB_Ascii bzw, als Abfolge von Bytes blind aus dem Speicher holst und woanders wieder als #PB_Ascii reinschreibst, bleibt er am Ende utf-8-codiert und nichts dramatisches würde passieren, außer dass du selber Grütze im String hast, was du aber nicht bemerkst, wenn du ihn selber nicht verarbeitest.

Zeichenkodierungen sind nichts weiter als Standards, wie die Bytes, die sich tatsächlich im Speicher befinden, als Text darzustellen sind. Also welche Bytefolge welchem Zeichen entspricht. Der Unicode-Zeichensatz passt nunmal nicht in den Wertebereich 0-255 eines Bytes. Selbst mit ucs-2 ist es bereits eng geworden.

Eklig wird es daher erst, wenn der String unter Verwendung einer falschen Zeichencodierung verarbeitet wird bzw. die Bytefolgen wieder in Zeichen verwandelt werden oder umgekehrt. (z.B. Ascii-Textdateien als utf-8 lesen und ausgeben)

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 18:44 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Dieser Zeichenkodierungsbug scheint aber nur unter Linux aufzutreten.

Unter Windows wird das UTF - 8217 Zeichen richtig dargestellt.

Es wird auch unter Linux das korrekte Zeichen ("Unicode Character 'RIGHT SINGLE QUOTATION MARK' (U+2019)") übergeben.

Aber bei unformatierten Textdateien wird das irgend wie unter Linux als falsches Zeichen interpretiert. (8242)

Wenn man das Zeichen aber einfach nur kopiert und per Zeicheneditor überprüft gibt dieser das korrekte Zeichen an. (8217)

Dieser "Bug" tritt bei mir nur unter Linux auf.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ExplorerGadget: Wie Pfad ohne Filterpattern richtig ange
BeitragVerfasst: 16.02.2018 18:53 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Ich bin von Ascii Nr. 39 ausgegangen. :roll:

Ansonsten kann ich dir nicht folgen. Ich weiß nicht, von was für einem Bug du da sprichst und was das mit den Pfadangaben von ExplorerTreeGadget zu tun haben soll... Wenn das bei dir nicht richtig gelesen wird, verwendest du eine falsche Zeichenkodierung bzw. verwechselst den Kodierungsstandard (utf/ucs) mit dem Unicode-Zeichensatz.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Exabot [Bot] und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye