Ausführen in der Entwicklungsumgebung vs. Exe
-
- Beiträge: 3
- Registriert: 28.06.2013 11:59
- Computerausstattung: MacBook Pro, OS X 10.8 mit Parallels u. Win 7 64bit
- Wohnort: Trier, Germany
Ausführen in der Entwicklungsumgebung vs. Exe
Hallo zusammen,
ich bin neu in der Purebasic-Gemeinde und benutze PB um kleinere Tool zu entwickeln. Ich habe mich für PB entschieden, da ich mit dem Ganzen .Net-Geraffel nichts zu
tun haben wollte. Komme auch soweit klar und habe mein erstes Tool fast fertig. Was mir nur dabei aufgefallen ist, wenn ich mein Programm innerhalb der Entwicklungsumgebung
starte funktioniert alles wunderbar, wenn ich es als EXE kompiliere sind die Ergebnisse anders. Um genauer zu sein, es handelt sich um ein kleines Tool mit dem Bilder (jpg) z. B. von
einer Kamera, bzw. Verzeichnis gelesen werden und anschließend in einem bestimmten Verzeichnis komprimiert, mit einem "Stempel" versehen werden. Ich benutze dazu die PB-Funktion ResizeImage.
Wie gesagt in der Entwicklungsumgebung funktioniert alles wunderbar, als EXE kompiliert erhalte ich nur ein schwarzes Bild. Zum Einsatz kommt PB 5.11 32bit und Win 7 64bit.
Kann mir vielleicht jemand erklären was ich falsch mache?
Vielen Dank für eure Unterstützung
Jörg
ich bin neu in der Purebasic-Gemeinde und benutze PB um kleinere Tool zu entwickeln. Ich habe mich für PB entschieden, da ich mit dem Ganzen .Net-Geraffel nichts zu
tun haben wollte. Komme auch soweit klar und habe mein erstes Tool fast fertig. Was mir nur dabei aufgefallen ist, wenn ich mein Programm innerhalb der Entwicklungsumgebung
starte funktioniert alles wunderbar, wenn ich es als EXE kompiliere sind die Ergebnisse anders. Um genauer zu sein, es handelt sich um ein kleines Tool mit dem Bilder (jpg) z. B. von
einer Kamera, bzw. Verzeichnis gelesen werden und anschließend in einem bestimmten Verzeichnis komprimiert, mit einem "Stempel" versehen werden. Ich benutze dazu die PB-Funktion ResizeImage.
Wie gesagt in der Entwicklungsumgebung funktioniert alles wunderbar, als EXE kompiliert erhalte ich nur ein schwarzes Bild. Zum Einsatz kommt PB 5.11 32bit und Win 7 64bit.
Kann mir vielleicht jemand erklären was ich falsch mache?
Vielen Dank für eure Unterstützung
Jörg
Re: Ausführen in der Entwicklungsumgebung vs. Exe
Kann es vielleicht sein, dass deine Anwendung aufgrund des aktuellen Arbeitsverzeichnisses das Bild nicht finden kann? Nutzt du absolute oder relative Pfade fürs Öffnen deiner Bilder?
Kannst du den Code von der Funktion, die deine Bilder öffnen soll, posten?
Kannst du den Code von der Funktion, die deine Bilder öffnen soll, posten?
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Ausführen in der Entwicklungsumgebung vs. Exe
Wie immer ist es schwer eine Antwort zu geben, wenn ein Beispielcode fehlt, an dem man das ganze Problem nachvollziehen kann.
Was genau meinst du damit, dass du nur ein schwarzes Bild erhältst? Welches Bild ist schwarz? Die verkleinerte Version deiner Bilder im Zielverzeichnis? Die Anwendung selbst ist schwarz? Nutzt du einen Screen und Sprites oder geht das alles mit der normalen 2DDrawing-Bibliothek? Fragen über Fragen!
Etwas mehr Infos brauchen wir noch, denn Nachfragen kostet uns und dir Zeit.
Was genau meinst du damit, dass du nur ein schwarzes Bild erhältst? Welches Bild ist schwarz? Die verkleinerte Version deiner Bilder im Zielverzeichnis? Die Anwendung selbst ist schwarz? Nutzt du einen Screen und Sprites oder geht das alles mit der normalen 2DDrawing-Bibliothek? Fragen über Fragen!

Etwas mehr Infos brauchen wir noch, denn Nachfragen kostet uns und dir Zeit.

Re: Ausführen in der Entwicklungsumgebung vs. Exe
Kann es sein, dass du so was machst?
beim Kompilieren wird die Zeile wegen dem "Debug" Ignoriert.
Code: Alles auswählen
Debug LoadImage(...)
beim Kompilieren wird die Zeile wegen dem "Debug" Ignoriert.
Re: Ausführen in der Entwicklungsumgebung vs. Exe
ich vermute mal, dass da irgendwo ein
steht. Dieser Aufruf wird nur bei eingeschaltetem Debugger ausgeführt, jedoch nicht in der finalen EXE.
Grüße ... Kiffi
Code: Alles auswählen
Debug [IrgendWas]
Grüße ... Kiffi
a²+b²=mc²
Re: Ausführen in der Entwicklungsumgebung vs. Exe
Eine weitere Fehlerquelle kann ein relativer Pfad sein, denn dieser hätte auf PB heraus einen anderen absoluten Pfad, als aus der EXE
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 3
- Registriert: 28.06.2013 11:59
- Computerausstattung: MacBook Pro, OS X 10.8 mit Parallels u. Win 7 64bit
- Wohnort: Trier, Germany
Re: Ausführen in der Entwicklungsumgebung vs. Exe
Vielen Dank für die schnelle Hilfe hier im Forum.
Hier mal die Prozedur in abgekürzter Form:
Es wird ein Bild mit 800x600 erzeugt, aber eben nur ein komplett schwarzes.
Gruß Jörg
Hier mal die Prozedur in abgekürzter Form:
Code: Alles auswählen
Procedure CompressAndLabelImage()
UseJPEGImageDecoder()
Define PosX.i, PosY.i
Define bildorg.l
Define giStempelPosition.i = 0
Define sOrg.s = "C:\Server\Org.jpg"
Define sDest.s = "C:\Server\Dest.jpg"
bild = LoadImage(#PB_Any, sOrg)
If bild
StartDrawing(ImageOutput(bild))
If OutputWidth() > 800 And OutputHeight() > 600
If Not ResizeImage(bild, 800, 600)
MessageRequester("Resize","Fehler beim Verkleinern des Bildes")
EndIf
EndIf
Select giStempelPosition
Case 0 ;LO
PosX = 800 / 100 * 5
PosY = 600 / 100 * 5
Case 1 ;LU
PosX = 800 / 100 * 5
PosY = 600 - (600 / 100 * 5)
Case 2 ;RO
PosX = 800 - (800 / 100 * 5) - TextWidth("123456 - ABCDEFG")
PosY = 600 / 100 * 5
Case 3 ;RU
PosX = 800 - (800 / 100 * 5) - TextWidth("123456 - ABCDEFG")
PosY = 600 - (600 / 100 * 5)
Default ;LU
PosX = 800 / 100 * 5
PosY = 600 - (600 / 100 * 5)
EndSelect
DrawText(PosX,PosY,"123456 - ABCDEFG",#Black, #White)
StopDrawing()
If Not SaveImage(bild, sDest)
MessageRequester("Sichern", "Fehler beim Speichern des Bildes")
EndIf
FreeImage(bild)
EndIf
EndProcedure
CompressAndLabelImage()
Gruß Jörg
Re: Ausführen in der Entwicklungsumgebung vs. Exe
Ich behaupte mal das du innerhalb des DrawingBlocks kein ResizeImage() machen darfst, dann das ändert ja den DrawingBuffer.
Warum das mit Debugger läuft weiß ich nicht.
Setzt das Resize vor StartDrawing() und ersetze dann OutputW/H durch ImageW/H:
Warum das mit Debugger läuft weiß ich nicht.
Setzt das Resize vor StartDrawing() und ersetze dann OutputW/H durch ImageW/H:
Code: Alles auswählen
If ImageWidth(bild) > 800 And ImageHeight(bild) > 600
If Not ResizeImage(bild, 800, 600)
MessageRequester("Resize","Fehler beim Verkleinern des Bildes")
EndIf
EndIf
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 3
- Registriert: 28.06.2013 11:59
- Computerausstattung: MacBook Pro, OS X 10.8 mit Parallels u. Win 7 64bit
- Wohnort: Trier, Germany
Re: Ausführen in der Entwicklungsumgebung vs. Exe
Genau das wars. Steht auch so in der Hilfe - war doch ne anstrengende Woche.
Vielen Dank.
Vielen Dank.