eps file requester

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

xaerox

Betreff: eps file requester

BeitragDi, Dez 20, 2011 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht ob sich der eine oder andere sich damit schon auseinandergesetzt hat.
Und zwar ich lade eine Datei in einer Schleife, was schonmal gruselig klingt.

Innerhalb eines Programms will ich ein Bild mit hilfe eines File-Requester von EPS laden.

Danach will ich das Bild mit DrawImage entsprechend darstellen, jedoch kommt ein Error "Image doesntn exist".


Ich wäre für jede Information dankbar.

Code: [AUSKLAPPEN]

Select menue
Case 2
If MouseHit (1) Then

heightmap$ = EG_FileRequester ("Heightmap laden...","","",ext$)      
texture$ = EG_FileRequester ("Textur laden...","","",ext$)   
                     
menue = 3            
EndIf
Case 3
DrawImage heightmap$, 0, 20
Biker sind wahre Helden.
Auch Musiker.

Holzchopf

Meisterpacker

BeitragDi, Dez 20, 2011 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mag mir jetzt nicht die ganze Escape GUI runterladen, nur um einen Blick in die von EPS mitgelieferte Hilfe zu werfen. Aber ich wage mal eine Vermutung:

EG_FileRequester gibt einen String zurück - nämlich den Dateinamen der ausgewählten Datei, resp. einen leeren String wenn keine Datei ausgewählt wurde. Zum zeichnen müsstest du das Bild natürlich dann auch noch laden Wink

Liege ich richtig?

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

xaerox

BeitragDi, Dez 20, 2011 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest Recht haben, aber mein Problem besteht darin, dass man doch keine dateien in einer schleife laden sollte, oder lieg ich da falsch?
Biker sind wahre Helden.
Auch Musiker.

Propellator

BeitragDi, Dez 20, 2011 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Man sollte eine Datei nicht mehrmals unnötig laden, du lädst sie aber nur unter einer Bedingung, nämlich MouseHit(1)
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

xaerox

BeitragDi, Dez 20, 2011 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
habe ich auch gerade gedacht, also das bild wird theoretisch einmal geladen...
Ok ich weiß dann bescheid weiterzumachen. Danke
Biker sind wahre Helden.
Auch Musiker.

Holzchopf

Meisterpacker

BeitragDi, Dez 20, 2011 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Dateien in Schleifen zu laden ist in der Regel keine gute Idee, da hast du recht. Aber: Keine Regel ohne Ausnahme! Diese Regel bezieht sich nämlich auf den Fall, in dem man in einer Schleife in jedem Schleifendurchgang die selbe Datei neu lädt. Dein Fall bildet hier aber die Ausnahme, schliesslich willst du 1. nicht in jedem Schleifendurchgang und 2. nicht die selbe Datei neu laden, sondern ganz offensichtlich nur dann, wenn der Benutzer dem Programm eine neue Datei angibt.

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

xaerox

BeitragDi, Dez 20, 2011 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
und wieder habe ich etwas dazu gelernt;) Very Happy
Biker sind wahre Helden.
Auch Musiker.

Xeres

Moderator

BeitragMi, Dez 21, 2011 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch eins:
Code: [AUSKLAPPEN]
DrawImage heightmap$, 0, 20

Bilder -und alle Mediandateien- werden in BB durch ein Int handle angesprochen. Strings zu benutzen kann Probleme bringen und ist in jedem Fall langsamer, weil immer konvertiert werden muss.
Als Pfad oder geladenes Bild kannst du immer gegen "" (leerer String) oder 0 testen, ob z.B. EG_FileRequester oder eben Loadimage erfolgreich ausgeführt wurden.
BlitzBasic: [AUSKLAPPEN]
Local heightmap_Path$ = EG_FileRequester ("Heightmap laden...","","",ext$)
If heightmap_Path$ = "" Then RuntimeError("Kein Pfad zu einer Heightmap")
Local heightmap% = LoadTerrain(heightmap_Path$)
If heightmap% = 0 Then RuntimeError("Heightmap konnte nicht geladen werden")

(Natürlich ist RuntimeError auch durch DebugLog und eine stille Fehlerkorrektur zu ersetzen)
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)

xaerox

BeitragSa, Dez 24, 2011 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwas funktioniert nicht mit der Abfrage.
Code: [AUSKLAPPEN]

            
Local heightmap_Path$ = EG_FileRequester ("Heightmap laden...","","",ext$)
If heightmap_Path$ = "" Then DebugLog("Fehler: Heightmap wurde nicht gefunden!") And menue = 1
Local heightmap% = LoadTerrain(heightmap_Path$)
If heightmap% = 0 Then DebugLog("Fehler: Heightmap ist fehlerhaft oder konnte nicht geladen werden") And menue = 1
      
menue = 3   

Es erscheint immer der Runtime Error, dass der Terrain nicht existiert..
Ich habe auch versucht dieses Part wegzulassen, so dass dann dort steht:

Code: [AUSKLAPPEN]

            
Local heightmap_Path$ = EG_FileRequester ("Heightmap laden...","","",ext$)
If heightmap_Path$ = "" Then DebugLog("Fehler: Heightmap wurde nicht gefunden!") And menue = 1

      
menue = 3   


Jedoch komme ich ins Menue 3, obwohl ich im Filerequester nichts gewählt habe, sondern leer auf ok gedrückt habe.
Biker sind wahre Helden.
Auch Musiker.

Propellator

BeitragSa, Dez 24, 2011 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Setzt du Graphics3D nach dem Laden neu?
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

Xeres

Moderator

BeitragSo, Dez 25, 2011 0:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach dem Laden in jedem Fall den Pfad anzeigen, wenn du nicht weißt, was in dem Fall zurück gegeben wird. Könnte der Ordner sein - was falsch, aber halt kein leerer String wäre. Teste auch gleich, was bei Abbrechen/X zurück gegeben wird.
Und dann benutze Filetype um nur vorhandene Dateien tatsächlich zu laden.

Nach allen Seiten absichern. Wink
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)

xaerox

BeitragMo, Dez 26, 2011 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, ich lade graphics3d nicht neu...

eine weitere Frage. Es wird der Pfad als string komplett angegeben, wie kann ich das so machen, das der absolute pfad angegeben wird, also anstatt:
"C:\programme\spiel\gfx\datei.jpg"

eben das hier:
"gfx\datei.jpg"


ist das möglich? eine anwendung einer fremden map wäre ja sonst auf anderen computer kaum möglich
Biker sind wahre Helden.
Auch Musiker.

Xeres

Moderator

BeitragMo, Dez 26, 2011 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Laufwerksbuchstabe ist es ein absoluter Pfad... Wenn du den Pfad speicherst und auf einem anderen Rechner laden willst, könntest du vor dem Speichern mit Currentdir vergleichen und alles bis auf den aktuellen Ordner wegschneiden.
Oder meinst du was anderes?
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)

xaerox

BeitragMo, Dez 26, 2011 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke das ists schon, muss ich mal probieren.
Biker sind wahre Helden.
Auch Musiker.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group