Crossplattform-Kompatibilität einfacher als gedacht?
Verfasst: 02.11.2013 06:00
Hallöle miteinander,
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...Daher Die Frage: Kann ich mir "\" nicht einfach sparen und stattdessen immer "/" verwenden? Wenn Windows wirklich IMMER mit dem Forward-Slash klarkommt, warum dann überhaupt noch Backslashes nutzen? Das hätte z.B. folgende Vorteile:
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.
Was meint den hier die Community? Ist das ganze krampfhafte OS-bezogene programmieren wirklich nötig? Hat jemand da schon "längere Erfahrung"?
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.
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.