bmk makeapp - Wie funktioniert es?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

M0rgenstern

Betreff: bmk makeapp - Wie funktioniert es?

BeitragFr, Jul 20, 2012 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

Ich versuche gerade den innerhalb eines Programmes den Compiler nochmal anzuwerfen.
Ich mache das folgendermaßen:
BlitzMax: [AUSKLAPPEN]
Local process:TProcess = CreateProcess("~qD:\Programme\BlitzMax\bin\bmk.exe~q makeapp -a -h temp_TestFile.bmx", 1)
While(process.Status() = 1)
PrintTextFromProcess(process:TProcess)
Delay(100)
Wend
DebugLog("Ended")

Function PrintTextFromProcess(Process:TProcess)
If Process.pipe.ReadAvail() > 0 Then 'If the pipe has data
StandardIOStream.WriteString(process.pipe.ReadString(process.pipe.ReadAvail())) 'We send the data as text to the standardiostream
StandardIOStream.Flush() 'We flush the stream
End If
End Function


Als Ausgabe bekomme ich:
Zitat:
Compiling:temp_TestFile.bmx

DebugLog:Ended


Da fehlt ja offensichtlich das Linking. Und eine .exe wird auch nicht erstellt.
Kann mir bitte jemand weiterhelfen?
Was mache ich falsch?

Also, die Datei die kompiliert werden soll gibt es auf jeden fall.

Lg, M0rgenstern

Propellator

BeitragFr, Jul 20, 2012 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde mal sagen er versucht ld.exe aufzurufen, welcher er aber nicht finden kann weils nicht im current working directory ist. ChangeDir benutzen, um nach BlitzMax/bin zu wechseln.
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

M0rgenstern

BeitragFr, Jul 20, 2012 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm.

Hilf irgendwie nicht.
Neue Code:
BlitzMax: [AUSKLAPPEN]
Local sDir:String = CurrentDir() + "/temp_TestFile.bmx"
DebugLog("Dir: " + sDir)
ChangeDir("D:/Programme/BlitzMax/bin/")
DebugLog("CurDir: " + CurrentDir())
Local process:TProcess = CreateProcess("~qbmk.exe~q makeapp -a -h " + sDir, 1)
While(process.Status() = 1)
PrintTextFromProcess(process:TProcess)
Delay(100)
Wend
DebugLog("Ended")


Ausgabe:
Zitat:
DebugLog:Dir: D:/Programmierung/BlitzMax/WIP/Automatic_UnitTests/temp_TestFile.bmx
DebugLog:CurDir: D:/Programme/BlitzMax/bin
Compiling:temp_TestFile.bmx
DebugLog:Ended


Also ins BlitzMax/bin Verzeichnis zu wechseln scheint nichts zu bringen...

Lg, M0rgenstern

Xeres

Moderator

BeitragFr, Jul 20, 2012 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde den zweiten Pfad auch escapen. Wozu ist der Flag 1 bei CreateProcess gut?

Funktioniert bei mir:
Code: [AUSKLAPPEN]
CreateProcess("~qC:\Program Files\BlitzMax\bin\bmk.exe~q makeapp ~qcode.bmx~q")
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

M0rgenstern

BeitragFr, Jul 20, 2012 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das ganze zu escapen funktioniert nicht.
Ich habe jettz mal den zweiten Parameter bei CreateProzess rausgenommen (stand so in der BMax Hilfe). Jetzt geht kurz die Konsole auf. Da wird auch irgendwas reingeschrieben, aber die Konsole geht so schnell zu, dass ich nichts lesen kann.

Also wie gesagt, alles zu escapen funktioneirt nicht. Weder mit Changedir noch mit expliziten Pfadangaben etc.
Ich verzweifel noch -.-


Lg, M0rgenstern

BladeRunner

Moderator

BeitragFr, Jul 20, 2012 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Lass das Ganze als Admin ausführen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Propellator

BeitragFr, Jul 20, 2012 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Für den Output kannst du die Pipe des Prozesses lesen.
BlitzMax: [AUSKLAPPEN]
While process.pipe.ReadAvail() > 0
DebugLog(process.pipe.ReadLine())
Wend
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

M0rgenstern

BeitragSa, Jul 21, 2012 8:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ha.
Vielen Dank Leute.
Es funktioniert jetzt... Sorry, war ein sau blöder Fehler.
Die Datei die kompilert werden sollte, war nicht ganz richtig. Also, wenn ich die von Hand kompilert habe, dann gabs nen Fehler.
Ich hab zwar den Prozess ausgelesen (siehe Post 1) aber das hats mir trotzdem nicht angezeigt.

Lg, M0rgenstern

Propellator

BeitragSo, Jul 22, 2012 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vermute mal, weil er nach dem Delay(100) schon beendet wurde, d.h. Status() != 1 war und du deshalb den ganzen Rest des Outputs verpasst hast. Jedoch nur blind geraten.
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group