Problem bei Pfadangabe mittels Konfigurationsdatei

Anfängerfragen zum Programmieren mit PureBasic.
Microman
Beiträge: 11
Registriert: 25.06.2012 10:18

Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von Microman »

Hallo zusammen,

ich benötige mal wieder eure Hilfe zum Thema: CreateDirectory(VerzeichnisName$)
Die Parameter "Speicherlaufwerk$ und VerzeichnisName$ lese ich dabei aus einer Konfigurationsdatei mit
Hilfe der Befehle

ReadFile(#Datei, Dateiname$) und ReadString(#Datei [, Flags]) ein.

Eine Überprüfung der eingelesenen Parameter mit Debug zeigt mir keinen Fehler.

Jedoch wird meine Pfadangabe 'D:\Messdaten' aus der Konfig-Datei im Befehl 'CreateDirectory(D:\Messdaten)'
nicht ausgeführt. Der Rückgabewert des Befehls ist Null, also konnte das Verzeichnis nicht erstellt werden.
Trage ich jedoch den Pfad direkt in den Befehl: CreateDirectory(D:\Messdaten) ein, dann funktionierts einwandfrei.

Ich hoffe mich verständlich ausgedrückt zu haben....

Wer kann mir weiterhelfen ???

cu
Microman
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von TroaX »

Ich denke mal Fehler in der Zeichenkodierung. Haste als Unicode kompiliert und wurde die Konfigurationsdatei auch als solche erstellt?

Du könntest auch die Preference-Library von PB verwenden. Die erstellt astreine Konfigurations-Dateien. ;-)
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von NicTheQuick »

Ohne deinen Code kann man da nur raten. Wenn dir ein Debug nach dem Einlesen der Parameter das richtige anzeigst, machst du einfach später was falsch. Dann hat's auch nichts mehr mit Unicode oder ASCII zu tun. Sonst wären die Debugs ja schon falsch.
Microman
Beiträge: 11
Registriert: 25.06.2012 10:18

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von Microman »

@ NicTheQuick,
Zum besseren Verständis ich werde mal ein Beispiel erstellen und posten.

@ TroaX:
"Du könntest auch die Preference-Library von PB verwenden. Die erstellt astreine Konfigurations-Dateien."
Könntest du mir das etwas ausführlicher erläuteren, ich habe da irgendwie (noch) keinen Durchblick.....

cu
Microman
Microman
Beiträge: 11
Registriert: 25.06.2012 10:18

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von Microman »

Hallo TroaX,

ich habe den Gedanken mit der Zeichenkodierung von dir weiter verfolgt:
Es muss an der Zeichenkodierung liegen.
Ich habe mir mal ein kleines Prog gebaut und damit mittels CreateFile und WriteStringN die benötigte Parameterdatei erzeugen lassen.
Diese habe ich dann in meinem Programm mit ReadFile(#Datei, Dateiname$) und ReadString(#Datei [, Flags]) in gewohnter Weise wieder eingelesen. Siehe da:
es funktioniert wie gewollt; ich kann beliebige Laufwerke und Pfade erzeugen und in meinem Programm weiterverarbeiten.
Ich habe zwar noch nicht das Abspeichern in anderen Formaten (Unicode) mit Erfolg hinbekommen, aber das wird auch noch.....
Erstmal Danke für den richtigen Tip !!!

Microman
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von TroaX »

Hää? Verstehe ich jetzt gerade gar nicht. Du hast dir ein Programm geschrieben, das dir die Konfig erzeugt. Dann kannst du mit der Datei in allen Programmen arbeiten. Wenn du nun aber die Konfig selbst mit einem Editor schreibst, dann geht das nicht? Also kommt die Datei auch nicht aus dem Programm? Oder wie meinste das jetzt?

Dann ist ja klar, das die Kodierung da eine Rolle spielt. Du kannst aber in den meisten Editoren die Kodierung einstellen.
Bei Notepad++ zum Beispiel unter Kodierung oben in der Menüleiste. Setzte mal auf UTF8. Wenn schon was drinne steht in der Datei nimmst du Konvertiere zu UTF8.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Microman
Beiträge: 11
Registriert: 25.06.2012 10:18

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von Microman »

@TroaX

Also: ich schreibe eine Software für ein Labormessgerät aus dem elektronischen Bereich. Diese Software kann mit ca. 20 Parametern eingestellt werden. Dazu habe ich mit Hilfe des Editors aus dem TotalCommander eine Parameter.dat erstellt; in dieser sind Messbereiche, maximale Messwertgrössen, Speicherpfade, usw hinterlegt. Jetzt kommts:
Alle Parameter, die irgendwelche Zahlenwerte beinhalten, kann ich problemlos mit 'ReadString' auslesen und weiterverarbeiten, kein Problem.
Jedoch diejenigen Parameter, die Laufwerksangaben (zB. "D:\"), Pfadangaben(zB."Messdatenverzeichnis\") oder Com-Port Angaben (zB. "Com1") enthalten, werden zwar korrekt ausgelesen, ich kann sie aber nicht zum Weiterverarbeiten,
zB. im Befehl: 'CreateDirectory() benutzen !!
Schaue ich mir die eingelesenen Daten mittels Debug an, werden diese Parameter aber korrekt angezeigt !!!
Jetzt habe ich einfach ein einfaches Prog geschrieben, mit dem ich die Parameter-Zeilen, die in der 'Parameter.dat' stehen sollen,
mittels 'CreateFile' und 'WriteString' erstellen lasse.
Die so entstandene 'Parameter.dat' funzt einwandfrei, auch die Laufwerks- und Pfadangaben. Schaue ich mir meine, mit einem Editor erstellte und die, vom Prog erstellte Parameterdatei an, sehe ich KEINEN Unterschied !! Optisch absolut Gleich, nur die Dateigrösse unterscheidet sich beachtlich.
Daher auch meine Annahme, das du mir gestern schon den richtigen Tip mit UTF-8, oder dergleichen gegeben hast.
Ich habe heute Abend mal mit den verschiedensten Editoreinstellungen probiert, bekomme aber immer das gleiche Ergebnis:
Es funzt nicht, alle Parameter mit Pfadangaben, Laufwerksangaben und ComPortangaben werden beim Einlesen mit ReadString korrekt angezeigt; ich kann sie aber NICHT weiter verwenden!!!
Nehme ich zB. die Variable 'Speicherpfad', in die ich einen Verzeichnispfad geladen habe und lasse sie mit Debug anzeigen, wird der eingelesene Pfad korrekt angezeigt. Benutze ich diese Variable dann mit dem Befehl 'ergebnis=CreateDirectory (SpeicherPfad)', wird der Befehl nicht ausgeführt und eine 'Null' zurückgegeben --> Befehl nicht erfolgreich ausgeführt.
Parametriere ich aber von Hand die Variable zB. Speicherpfad = "Messdaten\" , wird 'createDirectory' erfolgreich ausgeführt.

Ich werde also wohl ein kleines Prog schreiben, mit dem ich die 'Parameter.dat' grafisch editieren und speichern kann; macht ja auch einen besseren Eindruck.

PS. Du schreibst vom NotePad++ ; ich habe es auch vorhin noch mit dem Crimson-Editor versucht, funzt aber auch nicht......
werde es aber aber Morgen nochmal mit Notepad++ versuchen

cu
Microman
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von TroaX »

Ahhhhh jetzt verstehe ich auch das Problem :-D

Notepad++ ist vor allem in der Lage, UTF8 mit und ohne BOM sogar konvertieren kann. Versuch einfach mal die Datei in NP++ zu öffnen unde die Datei in UTF-8 MIT BOM zu konvertieren. Denn wenn du keinen Unterschied in der Anzeige sieht, wird die Datei wohl von PB mit BOM geschrieben werden. Denn dank Byte Order Mark zeigen die Editoren den Text immernoch identisch an. Die Zeichen sind aber trotzdem anders kodiert. Also entweder mit oder ohne BOM. Aber ich vermute mal eher mit BOM.

Greetz
TroaX
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Microman
Beiträge: 11
Registriert: 25.06.2012 10:18

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von Microman »

Hallo TroaX,

ich habe heute Morgen Notepad++ installiert und einen neuen Versuch gewagt.
Es funktioniert mit UTF-8.
Alles so, wie ich es will !!!

Danke nochmal für deine Bemühungen

cu
Microman
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem bei Pfadangabe mittels Konfigurationsdatei

Beitrag von Kiffi »

TroaX hat geschrieben:Ahhhhh jetzt verstehe ich auch das Problem :-D
ich irgendwie nicht. Das Problem scheint mir hausgemacht.

@Microman: Wieso nutzt Du nicht die Preference-Library?

Grüße ... Kiffi
a²+b²=mc²
Antworten