ist mir ja fast peinlich solche scheinbaren Absolutanfängerfragen zu stellen, aber ich vermute, dass ich nicht der einzige bin, der hier herumrätselt:
Ich bin gerade am grübeln, ob ich mir nicht immer viel zu viel Arbeit mache, wenn ich versuche crossplatform-kompatibel zu programmieren.
Zum einen das alte leidige Thema "/" und "\" in Dateipfaden. Ich habe immer mal wieder von Zeit zu Zeit absichtlich (ja... oft auch unabsichtlich...) unter Windows statt "\" ein "/" verwendet. Und was ist passier? Ganichts... alles funktioniert fehlerfrei...
Code: Alles auswählen
reset$ = GetCurrentDirectory()
Debug GetCurrentDirectory() ; C:\Program Files\PureBasic\
Debug FileSize("..\PureBasic") ; -2
Debug FileSize("../PureBasic") ; -2
Debug ""
Debug FileSize("C:/Program Files\PureBasic/compilers") ; -2 (sogar beim Mischen!)
Debug ""
SetCurrentDirectory(reset$)
SetCurrentDirectory("\")
Debug GetCurrentDirectory() ; C:\
SetCurrentDirectory(reset$)
SetCurrentDirectory("/")
Debug GetCurrentDirectory() ; C:\
- Der Code ist übersichtlicher, da kein CompilerIf und/oder Slashkonstanten verwendet werden müssen
- Relative Pfade, welche man z.B. in einer Prefereces-Datei speichert können ohne Bearbeitung zwischen Windows, Linux und MacOS ausgetauscht werden
- Wenn HTTP ins spiel kommt, läuft man wenier Gefahr die Slashes durcheinanderzubringen und...
- ...man braucht nicht ständig hin- und her zu konvertieren, wenn man z.B. Verzeichnisstrukturen vergleicht oder kopiert
- Shift+7 ist beidhändig bzw. symmetrisch erreichbar; AltGr+ß nicht bzw. nur über den Umweg Strg+Alt+ß
- usw. usf.
Das zweite ist das EOL-Thema, also #CRLF$ oder nur #LF$. Auch hier scheint Windows keine Probleme zu machen (außer "Notepad.exe"!) und ich meine, dass ts-soft mal erwähnte, dass auch Linux immer #CRLF$ problemlos frisst.
Code: Alles auswählen
a$ = "#LF$" + #LF$ +#LF$
a$ = "#CRLF$"+ #CRLF$+#CRLF$
a$ = "#CR$" + #CR$ +#CR$ ; <- nur zur Vollständigkeit...
For i = 1 To 10
a$ + "Zeile " + Str(i) + #LF$
b$ + "Zeile " + Str(i) + #CRLF$
c$ + "Zeile " + Str(i) + #CR$
Next
If OpenWindow (0, 0, 0, 300, 180, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(0, 0, 0, 100, 180)
EditorGadget(1, 100, 0, 100, 180)
EditorGadget(2, 200, 0, 100, 180)
SetGadgetText(0, a$) ; OK! 10 Zeilen
SetGadgetText(1, a$) ; OK! 10 Zeilen
SetGadgetText(2, a$) ; OK! 10 Zeilen
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
CloseWindow(0)
MessageRequester("bla", a$) ; OK! 10 Zeilen
MessageRequester("bla", b$) ; OK! 10 Zeilen
MessageRequester("bla", c$) ; OK! 10 Zeilen
Durch kommerzielles Interesse Seitens MS und "das Linux-Internet" sollte Windows doch eingentlich damit umgehen können (die waren ja schon immer bemüht sogar die Fehler der Programmierer OS-seitig zu korrigieren!).
Und im Bezug auf EOLs sollte der OpenSource- und Community-Gedanke doch eigentlich bei Linux zum gleichen Ergebnis geführt haben.
Bei Apple bin ich mir unsicher... aber eher aus einer subjektiven Antipathie heraus.

PS: Was machen die obigen Codes eigentlich unter Linux? Habe hier gerade kein lauffähiges PureBasic unter Linux.