Auto OpenMyIncludes in PB-IDE

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :mrgreen:

Nicht gespeicherte Dateien können ja nicht geöffnet werden, wozu die unterstützen :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Nochmals Fehler beseitigt, ich hoffe jetzt klappt alles
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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 :mrgreen:

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!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :mrgreen:
Zuletzt geändert von ts-soft am 09.04.2007 01:04, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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 :wink:
//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:
Bild
Zuletzt geändert von AND51 am 09.04.2007 03:16, insgesamt 4-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

:lol:
An die Environmentvar hab ich nicht gedacht, aber schneller ist Deins nicht, bzw. ich bekomme tausendstel sekunden nicht Bewußt mit :mrgreen:
Warum Du das mit Delay machst ist mir nicht klar, aber wirste schon Wissen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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! :lol:



TS-Soft hat geschrieben:An die Environmentvar hab ich nicht gedacht
Tjaaaa... :wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten