Seite 2 von 2

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 22.11.2018 14:10
von stevie1401
Generell scheint es ja doch machbar zu sein wie dieses Beispiel zeigt:

Code: Alles auswählen



  Procedure ReadCallback(Status, Filename$, File, Size)
    If Status = #PB_Status_Loaded
      Debug "File: " + Filename$ + " - Size: " + Size + " bytes"
      
      ; Read the first 10 lines
      ;
      While Eof(0) = 0 And NbLine < 10 
        Debug ReadString(0)            
        NbLine+1
      Wend
      
      CloseFile(0)
      
    ElseIf Status = #PB_Status_Error
      Debug "Error when loading the file: " + Filename$
    EndIf
  EndProcedure
  
  Procedure OpenFileRequesterCallback()
    If NextSelectedFile()
      OpenFile(0, SelectedFileID(), @ReadCallback(), #PB_LocalFile)
    EndIf
  EndProcedure
  
  Procedure ChooseFileEvent()
    OpenFileRequester("*.txt", @OpenFileRequesterCallback())
  EndProcedure
  
  OpenWindow(0, 0, 0, 300, 50, "Read file example", #PB_Window_ScreenCentered)
    ButtonGadget(0, 10, 10, 280, 30, "Choose a file...")
    
  BindGadgetEvent(0, @ChooseFileEvent())



Die Frage ist, wie kann ich Dateien ohne den OpenFileRequester öffnen?

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 22.11.2018 14:42
von RSBasic
Genau, wie ich vermutet habe.

Einfach statt SelectedFileID() trägst du den relativen Pfad ein.

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 22.11.2018 17:58
von stevie1401
Wenns doch nur so einfach wäre.

Den Status = #PB_Status_Loaded in der Procedure ReadCallback bekommt man nur über OpenFileRequester("*.txt", @OpenFileRequesterCallback())

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 22.11.2018 18:25
von NicTheQuick
Spiderbasic läuft meines Wissens einfach als Webanwendung im Browser und stellt keinen serverseitigen Anwendungsserver bereit. Somit kann man nur über den Öffnen-Dialog Dateien auf die Seite hochladen und dann benutzen. Mehr geht nicht. Das verbieten die Browser. Da kann auch Spiderbasic nichts daran ändern.

Ich hab das Gefühl hier fehlt Basiswissen, das sich noch angeeignet werden müsste. Ich tue das allerdings, weil es dazu genug im Netz gibt. Wenn man suchen möchte, ersetzt man "Spiderbasic" einfach durch "Javascript", dann sollte man genügend Ergebnisse erhalten.

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 22.11.2018 19:19
von ¯\_(ツ)_/¯
NicTheQuick hat geschrieben:Ich hab das Gefühl hier fehlt Basiswissen, das sich noch angeeignet werden müsste.
Das spielt für stevie1401 aber keine Rolle weil er Spiderbasic hat und seiner Meinung nach muss er sich nicht mit anderen Themen beschäftigen weil er eben SpiderBasic hat. ;)

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 23.11.2018 10:57
von stevie1401
Oh, jetzt fängt Bashing an? Wie cool.
Wer auf meine Fragen nicht antworten möchte, muss es nicht. Und wem die Augen weh tun von meinen Fragen, der kann diese getrost überlesen.
Teilt der Allgemeinheit doch bitte deutlich mit, wer hier Fragen stellen darf und welche Fragen genehm sind.

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 23.11.2018 12:25
von NicTheQuick
Ich möchte dich keinesfalls bashen. Ich habe nur das Gefühl wir drehen uns im Kreis. Und man müsste einfach weiter ausholen um zu erklären, warum das, was du tun möchtest, nicht möglich ist, oder zumindest nicht so einfach möglich ist. Ich versuche es nochmal grob:
spiderbasic.com hat geschrieben:SpiderBasic is new web client-side programming language...
Als client-seitige Websprache gibt es heutzutage eigentlich nur noch Javascript (Java, Flash, Silverlight u.a. sterben eher aus). Spiderbasic macht nichts anderes als eine BASIC-Syntax bereitzustellen, die dann in Javascript übersetzt wird. Wurde ein SB-Programm also kompiliert, fällt hinten HTML und Javascript raus, das im Kontext einer Webseite in einem Browser ausgeführt werden kann. Das heißt die programmierte Anwendung läuft nur im Browser und ist auch immer nur so schnell wie die JavaScript-Engine des verwendeten Browsers in Verbindung mit dem PC, auf dem der Browser läuft, also ähnlich wie eine EXE-Datei, die du ausführst.
Der Unterschied zu einer nativen EXE-Datei ist jetzt aber, dass der Browser den JavaScript-Code in einer Sandbox laufen lässt, die alle Zugriffe auf andere Webseiten, die gleichzeitig in anderen Tabs offen sind, und auf das Betriebssystem selbst blockt. Das heißt kein JavaScript-Code kann irgendwo außerhalb des Browsers auf irgendetwas zugreifen, auch nicht auf das Dateisystem. Schafft man es durch irgendeinen Hack doch ohne Zustimmung des Benutzers auf Dateien zuzugreifen, kann man sich Dank der Bug-Bounty-Programme von Google, Mozilla, Microsoft und Apple ein paar Groschen verdienen, weil dies ein erhebliches Sicherheitsleck darstellt. Hier noch ein Zitat aus der Wikipedia:
Wikipedia hat geschrieben:Tägliche Anwendung findet die Abgrenzung von potenziell unsicheren Programmteilen in heutigen Webbrowsern, so arbeiten Chromium-basierte Browser für einzelne Webseiten und Plugins jeweils in unabhängigen Sandbox-Prozessen, wodurch die Stabilität erhöht wird und ein Browser-Exploit wesentlich schwieriger Kontrolle über das Anwender-System erhalten kann.
Aber wie kannst du jetzt trotzdem auf Dateien von der Festplatte des Nutzers zugreifen?

Das geht nur interaktiv durch den Nutzer. Du musst einen "Hochladen"-Button oder ein Drag'n'Drop-Feld auf der Webseite anbieten, auf das der Nutzer einzelnen Dateien ziehen kann. Ganze Ordner gehen nicht, immer nur einzelne Dateien. Deine Webseite muss dann den Upload initiieren und auf dem Server speichern, der deine Webseite ausliefert. Dafür brauchst du natürlich ein entsprechendes Backend. Das kannst du mit viel Mühe in Purebasic schreiben oder du nutzt etablierte Sprachen wie PHP, Python, Ruby u.ä. dafür. Darauf werde ich aber nicht weiter eingehen. Sobald die Datei des Nutzers nun auf dem Server gespeichert ist, kann deine Webanwendung sie jederzeit von diesem in den Speicher des Browsers laden und tun, was es damit will. Je nachdem, was du mit diesen Dateien machen willst, bietet es sich aber vielleicht eher an die Dateien im Backend, also auf dem Server zu verarbeiten, anstatt im Browser des Nutzers. Denn wenn der Nutzer ungeduldig ist und auf F5 hämmert, wird dein Programm abgebrochen und neu geladen.

Sollte dein Server dein eigener PC sein, dann kann der Server, also das Backend, natürlich auch auf deine PC Festplatte zugreifen, sofern du es ihm erlaubst. Dann kannst du prinzipiell auch direkt auf deine Dateien auf der Festplatte zugreifen. Dein Spiderbasic-Programm muss dann den Server nach einer Datei fragen und in den Browser herunterladen, damit damit gearbeitet werden kann. Aber natürlich ist dieses Szenario höchst selten und vermutlich möchtest du am Ende nur einen Server für alle Nutzer haben, sodass sie prinzipiell nur auf die Daten des Servers Zugriff haben, nicht aber auf ihre jeweils eigene Festplatte.

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 23.11.2018 14:01
von stevie1401
Danke für die Info!

Re: Mit Spiderbasic lokale Dateien auslesen.

Verfasst: 01.02.2019 19:42
von dysti
Ich weiß nicht ob das Problem noch aktuell ist, ansonsten gebe in Google mal folgendes ein:
Https://github.com/topics/spiderbasic
Vielleicht ist hier die Lösung!