Invalid Stream Handle bei exe

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

AMY

Betreff: Invalid Stream Handle bei exe

BeitragDo, Jun 01, 2017 11:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brüte seit Tagen über einem Code der in der IDE mit und ohne Debugger Fehlerfrei läuft. Allerdings wenn ich daraus eine exe erstelle kommt jedes mal die Fehlermeldung "Invalid Stream Handle".
Die TrawlFolder Funktion habe ich von blitzbasic.com ( https://www.blitzbasic.com/cod...p?code=625 )
Vielleicht findet von euch ja einer einen Fehler.
Ich benutze Windows 10. Denke mal aber nich das es daran liegt, andere Programme laufen ja auch einwandfrei.

Hier mal der Code
Code: [AUSKLAPPEN]
; B+ program to populate a treeview gadget with folders and files
; Author: Assari
; Created: 16th March 2003
; Edited by: Amy
; Last Edit: 1st June 2017

Global window=CreateWindow("SaveDirStructure2",0,0,800,600,Desktop(),1+2+4+8)
treeview=CreateTreeView( 0,0,ClientWidth(window),ClientHeight(window),window )
SetGadgetLayout treeview,1,2,2,2
root=TreeViewRoot( treeview )
Global node,SaveFile

Commandliner$=CommandLine()
If Len(Commandliner)>0 Then
   LoadTree(CommandLiner,Root)
   SetStatusText window, "Laden erfolgreich"
Else
   folderlist$=RequestDir("Pls Select Folder")
   If Folderlist="" Then End
   Filename$=RequestFile("Save Tree","tree",1)
   If Filename="" Then End
   SaveFile=WriteFile(Filename)
   
   If folderlist$>"" And Right$(folderlist$,1)="\" Then ;remove any \
      folderlist$=Left$(folderlist$,Len(folderlist$)-1)
   EndIf
   
   node=AddTreeViewNode(FolderList$,root)
   
   TrawlFolder(FolderList$,"root","",node)
   SetStatusText window, "Fertig"
   
   CloseFile SaveFile
EndIf
ExpandTreeViewNode node
CollapseTreeViewNode node
Repeat
   WaitEvent()
   If EventID()=$803 Then End
Forever

End

Function LoadTree(Filename$,rootnode)
   currentParent=rootnode
   Local LastParentCount
   Local LastParent[99]
   file=ReadFile(Filename)
   Repeat
      FoF=ReadByte(file)
      Name$=ReadLine(file)
      Select FoF
         Case 3
            CurrentParent=LastParent[LastParentCount]
            LastParentCount=LastParentCount-1
         Case 2
            LastParentCount=LastParentCount+1
            LastParent[LastParentCount]=currentparent
            node=AddTreeViewNode(">"+Name$,CurrentParent)
            CurrentParent=node
         Case 1
            node=AddTreeViewNode(Name$,CurrentParent)
      End Select
   Until Eof(file)
End Function
Function TrawlFolder(CurrentPath$, CurrentParent$, Pattern$, ParentNode, FromFunction=0)
    If CurrentParent$="root" Then
      CurrentParent$=CurrentPath$
      xPath$=CurrentPath$
    Else
      xPath$=CurrentPath$+"\"+CurrentParent$
    EndIf
   
   hDir = ReadDir(xPath$):If hDir=0 Then Return ;no more folders
   
   Repeat
      
      File$=NextFile(hDir)
      If File$="" Then
         If FromFunction=1 Then
            WriteByte SaveFile,3
            WriteLine SaveFile,".."
         EndIf
         Return ;no more files
      EndIf
      
      Select FileType(xPath$+"\"+file$)
         Case 2 ;folder
            If Not (file$="." Or Right$(file$,2)="..") Then
               node=AddTreeViewNode(">"+file$,ParentNode)
               WriteByte SaveFile,2
               WriteLine SaveFile,file
               TrawlFolder(xPath$,File$,Pattern$, node,1)   ;recursion required here
            EndIf
         Case 1 ;file
            node=AddTreeViewNode(file$,ParentNode)
            WriteByte SaveFile,1
            WriteLine SaveFile,file
      End Select
      
      SetStatusText window, CurrentParent$+"\"+file$ ;just to let the world know we're working
      WaitEvent(1):If EventID()=$103 And EventData()=27 Then Return;Escape route
      
   Forever
End Function
Projekte: www.amyscbi.de
I never comment my sourcecode. What's HARD to write must be HARD to read!

Holzchopf

Meisterpacker

BeitragDo, Jun 01, 2017 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du dir den Inhalt von Commandliner$ mal ausgeben lassen? Der ist vllt. anders abhängig davon, ob das Programm aus der IDE gestartet wird oder als .exe

MfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

AMY

BeitragDo, Jun 01, 2017 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich nicht ich mach das immer so. aber Selbst wenn es was anderes ausgibt sollte das Programm doch zumindest starten wenn nichts per commandline übergeben wird.
Ich kann aber gerne morgen früh es mal ausprobieren wenn ich wieder am Laptop bin. (Bin grade auf arbeit)
Projekte: www.amyscbi.de
I never comment my sourcecode. What's HARD to write must be HARD to read!

Cykid

BeitragFr, Jun 02, 2017 5:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Es funktioniert ausschließlich dieser Code nicht?

AMY

BeitragFr, Jun 02, 2017 6:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab den Fehler gefunden ist mir allerdings dennoch ein Rätsel.
Es handelt sich dabei nur um BlitzPlus, Blitz3D funktioniert weiterhin wie gewohnt.
Das Problem besteht nur bei jetzt kompilierten exe Dateien. Ältere funktionieren weiterhin wie gewohnt.
Die Commandline gibt mir jetzt immer erst ein leerzeichen und dann die commandline aus. Somit gab auch beim normalen starten der exe ohne übergabe einer datei die Commandline ein Leerzeichen zurück. Daher musste ich das abschneiden der commandline nur anpassen.
Code: [AUSKLAPPEN]
If Len(Commandliner)>1 Then
LoadTree(Mid$(CommandLiner,3,Len(Commandliner)-3),Root)
Projekte: www.amyscbi.de
I never comment my sourcecode. What's HARD to write must be HARD to read!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group