Seite 3 von 3
Re: 2 ärgerliche Fälle kein Linuxprogramm fertigzukriegen
Verfasst: 17.05.2023 06:28
von DarkDragon
Wie #NULL & NicTheQuick schon schrieben, safoall.ttf existiert nicht. Safoall.ttf mit großem S jedoch schon. Das hat nichts mit PureBasic zu tun, eher mit dem Dateisystem deiner Partition und Linux. Wenn du Groß-/Kleinschreibung ignorieren willst formatiere die Partition in NTFS oder FAT.
Re: 2 ärgerliche Fälle kein Linuxprogramm fertigzukriegen
Verfasst: 17.05.2023 09:01
von mk-soft
Path.s = "/home/peter/Safoall.ttf"
Re: 2 ärgerliche Fälle kein Linuxprogramm fertigzukriegen
Verfasst: 17.05.2023 09:04
von mk-soft
Bloss nicht auf NTFS oder FAT formatieren. Sonst funktioniert nicht mehr alles korrekt (Berechtigungen, etc)
Re: 2 ärgerliche Fälle kein Linuxprogramm fertigzukriegen
Verfasst: 17.05.2023 09:18
von Heinz Mendax
Hallo !
Ich muß mich schämen,daß trotz Hinweis zum Gross-Kleinschreiben ich irgendwie diesen Fehler nicht gesehen habe. Nachdem
ich die Schriftdatei einheitlich kleingeschrieben überall eingesetzt hatte, lief auch der Includebinary- Aufruf. Allerdings wurde die
richtige Schrift im Programm auf den Buttons nicht angezeigt, sondern eine Ersatzschriftart. Das Ganze funktioniert jetzt, nachdem
die Procedur Rebuilt_FontFile_From_DataSection() eingesetzt worden ist. Vielen Dank allen, die sich hier Gedanken gemacht haben.
Das andere Problem habe ich bis jetzt nicht lösen können (Dateilesen zeilenweise ohne korrekte EOF-Feststellung). Ich mache es jetzt
ohne EOF-Abfrage, indem ich beim Schreiben die Zeilen zähle und beim Lesen nur diese Zahl einhalte.
Heinz
Re: 2 ärgerliche Fälle kein Linuxprogramm fertigzukriegen
Verfasst: 17.05.2023 11:04
von mk-soft
Mal eine Hilfsfunktion wie man so was lösen kann.
Code: Alles auswählen
;-TOP
; Read And Write TextFile by mk-soft, v1.02, 28.03.2020
EnableExplicit
Procedure ReadFileToList(FileName.s, List TextList.s()) ; Result Format (BOM)
Protected file, format
ClearList(TextList())
file = ReadFile(#PB_Any, FileName)
If file = 0
Debug "Error Open File: " + FileName
ProcedureReturn 0
EndIf
format = ReadStringFormat(file)
If format = 0
Debug "Error Read BOM: " + FileName
CloseFile(file)
ProcedureReturn 0
EndIf
While Not Eof(file)
AddElement(TextList())
TextList() = ReadString(file, format)
Wend
CloseFile(file)
ProcedureReturn format
EndProcedure
; ----
Procedure WriteFileFromList(FileName.s, List TextList.s(), Format = #PB_UTF8) ; Result wrote lines
Protected file, cnt
If Format <> #PB_Ascii And Format <> #PB_UTF8 And Format <> #PB_Unicode
Debug "Error BOM not supported: " + FileName
ProcedureReturn 0
EndIf
file = CreateFile(#PB_Any, FileName, Format)
If file = 0
Debug "Error Create File: " + FileName
ProcedureReturn 0
EndIf
If WriteStringFormat(file, Format) = 0
Debug "Error Write BOM: " + FileName
CloseFile(file)
ProcedureReturn 0
EndIf
ForEach TextList()
If WriteStringN(file, TextList()) = 0
Debug "Error Write Line: " + FileName
CloseFile(file)
ProcedureReturn 0
Else
cnt + 1
EndIf
Next
CloseFile(file)
ProcedureReturn cnt
EndProcedure
; ****
Global NewList Text.s()
Define filename.s, bom
; Read CSV to text list
filename.s = OpenFileRequester("Open", "", "", 0)
If filename
bom = ReadFileToList(filename, Text())
Debug "BOM = " + bom
EndIf
ForEach Text()
Debug Text()
Next
Re: 2 ärgerliche Fälle kein Linuxprogramm fertigzukriegen
Verfasst: 17.05.2023 12:40
von NicTheQuick
@mk-soft:
Kurzer Hinweis dazu:
Code: Alles auswählen
format = ReadStringFormat(file)
If format = 0
Debug "Error Read BOM: " + FileName
CloseFile(file)
ProcedureReturn 0
EndIf
Eigentlich kann ReadStringFormat() keine 0 zurückgeben. Der Default wird immer #PB_Ascii sein, zumindest laut Hilfe. Man könnte an der Stelle allerdings überprüfen, ob das Format eins von #PB_Ascii, #PB_UTF8 oder #PB_Unicode ist. In allen anderen Fällen kannst du das Format nicht an ReadString() weitergeben.