Seite 2 von 5
Verfasst: 09.04.2007 00:31
von ts-soft
Hab es oben nochmal wegen des Pfades korrigiert!
Nicht gespeicherte Dateien werden nicht unterstützt. Diese wären auch
schön blöd, wenn sie relative Pfade enthalten würden
Nicht gespeicherte Dateien können ja nicht geöffnet werden, wozu die unterstützen

Verfasst: 09.04.2007 00:46
von ts-soft
Nochmals Fehler beseitigt, ich hoffe jetzt klappt alles
Verfasst: 09.04.2007 00:48
von AND51
> Nicht gespeicherte Dateien werden nicht unterstützt. Diese wären auch
schön blöd, wenn sie relative Pfade enthalten würden
Wieso? Kann doch sein, dass einer seine Includes im Compilerordner hat
Stehe kurz vor der Fertigstellung, ich zerbrech mir nur grad den Kopf, wie groß das Delay sein muss, damit alle Dateien schön geladen werden, aber es nicht zu lange dauert!
Verfasst: 09.04.2007 00:54
von ts-soft
Einfach warten bis RunProgram fertig ist, mit WaitFlag. Delay ist wie immer
ungeeignet, nur im Notfall nutzbar.
//Edit
>> Ich habe eine Hauptdatei, die mehrere Includes enthält, dein Toll hat aber nur das erste Include geöffnet
Das passiert wenn man das Tool manuell ausführt, das ganze geht nur mit
dem passenden Auslöser, wenn die anderen Includes im zweiten oder
späteren Files sind! Weil diese ja beim laden eine neue Instanz des Tools
starten müssen, also Rekursiv das ganze

Verfasst: 09.04.2007 01:03
von AND51
Nee, das geht zumindest bei mir nicht, warum? Dann läd er nur den ersten Include. Warum?
Weil du eingestellt hast, dass nur 1 Instanz gestartet werden soll, dies wird logischerweie nie beendet, also wartet das Werkzeug sich nen Wolf.
Verfasst: 09.04.2007 01:06
von ts-soft
Nicht die IDE warten lassen, das geht nicht, RunProgram warten lassen, bis beendet!
Der Auslöser: Quellcode geladen ist wichtig, sonst kanns nicht gehen
Verfasst: 09.04.2007 01:08
von AND51
Hier mein "AutoOpenIncludes" Tool
Mein Code ist kürzer als deiner, TS-Soft! Außerdem brauche ich kein GetPureBasicDirectory(), denn die IDE flüstert mir den Pfad!
Ich greife auch nicht auf die Registry zu und die Wartezeit wird dynamisch ermittelt, sodass es nicht zu lange dauert, alle Includes zu öffnen. Trotzdem kommt die langsame IDE mit
//Verbessert: Es gibt nun auch bei mir einen globalen Mutex, falls mehrere Instanzen des Werkzeugs ausgeführt werden. Dies verhindert das Laden zu vieler IncludeFiles auf einmal, das verkraftet die IDE nicht.
Code: Alles auswählen
; AutoOpenIncludes
; Autor: André (AND51) Stapf
; Requires: PB 4.00+
; Demo: No (Yes, if you leave out the API)
EnableExplicit
Define.s zeile, path=GetPathPart(GetEnvironmentVariable("PB_TOOL_Compiler")), file=ProgramParameter(), mutex="AutoOpenInclude"+GetEnvironmentVariable("PB_Tool_MainWindow")
CreateMutex_(0, 1, @mutex)
WaitForSingleObject_(mutex, 12345)
Procedure runFile(file.s)
If FileSize(file) >= 0
RunProgram(file) ; There MUST be a delay in order to load all includes correctly! This is, because the IDE is so slow...
Delay(IntQ(FileSize(file)/2.3)) ; If this is too slow for you, define your own delay here!
EndIf
EndProcedure
If ReadFile(0, file)
Define format=ReadStringFormat(0), path.s=GetPathPart(file)
While Not Eof(0)
Define zeile.s=ReadString(0, format)
Define inc=FindString(zeile, "IncludeFile", 1), incX=FindString(zeile, "XIncludeFile", 1), incP=FindString(zeile, "IncludePath", 1), comment=FindString(zeile, ";", 1)
Define quoteL=0, quoteR=0
If comment <= inc And comment <= incX And comment <= incP And inc|incX|incP
If incP
quoteL=FindString(zeile, Chr(34), incP)
quoteR=FindString(zeile, Chr(34), quoteL+1)
path=Mid(zeile, quoteL+1, quoteR-quoteL-1)+"\"
EndIf
If incX
quoteL=FindString(zeile, Chr(34), incX)
quoteR=FindString(zeile, Chr(34), quoteL+1)
runFile(path+Mid(zeile, quoteL+1, quoteR-quoteL-1))
EndIf
If inc And (inc-1 <> incX And Not incX)
quoteL=FindString(zeile, Chr(34), inc)
quoteR=FindString(zeile, Chr(34), quoteL+1)
runFile(path+Mid(zeile, quoteL+1, quoteR-quoteL-1))
EndIf
EndIf
Delay(1)
Wend
CloseFile(0)
EndIf
Bitte das Werkzeug genauso einstellen, wie das von TS-Soft, hier nochmal das Bild dazu:

Verfasst: 09.04.2007 01:10
von AND51
ts-soft hat geschrieben:Nicht die IDE warten lassen, das geht nicht, RunProgram warten lassen, bis beendet!
Der Auslöser: Quellcode geladen ist wichtig, sonst kanns nicht gehen
#PB_Program_Wait veranlasst
das Werkzeug auf das Ende seines Kindprozesses zu warten!
Die IDE ist aber gleichzeitig Eltern-
und Kindprozess des Werkzeugs! Und da
RunProgram() nun wartet, bis sein Kindprozess fertig ist, geht das nicht.
Zumindest in meiner Variante nicht!
Verfasst: 09.04.2007 01:15
von ts-soft
An die Environmentvar hab ich nicht gedacht, aber schneller ist Deins nicht, bzw. ich bekomme tausendstel sekunden nicht Bewußt mit
Warum Du das mit Delay machst ist mir nicht klar, aber wirste schon Wissen.
Verfasst: 09.04.2007 01:22
von AND51
> Warum Du das mit Delay machst ist mir nicht klar, aber wirste schon Wissen
Du kannst es ja mit #PB_Program_Wait ausprobieren. Aber dann läd meiner nur den 1. Source
und residiert noch weiter im Taskmanager. Ich sag ja, das Ding wartet sich mit WAIT nen Wolf!
> bzw. ich bekomme tausendstel sekunden nicht Bewußt mit
Das kann ich leider nicht sagen, weil deins leider nicht ganz richtig funktioniert. Denn deiner läd zu schnell, obwohl ich nur 1 IDE Instanz erlaube, sind zwei weitere Instanzen erschienen (bei einem 46 KB Main mit 7 Includes (21 KB)).
Aber hey! An der dynmaischen Delay-Formel hab ich mir das Hirn zermatert!
TS-Soft hat geschrieben:An die Environmentvar hab ich nicht gedacht
Tjaaaa...
