Grafiken in ein Array einlesen funktioniert nicht!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

satzzeichen

Betreff: Grafiken in ein Array einlesen funktioniert nicht!

BeitragSo, Aug 21, 2005 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich möchte Grafiken aus einem Ordner in ein Array einlesen, allerdings gibt es da ein Problem:
BlitzBasic: [AUSKLAPPEN]

Dim grafik_name(100)
x=1
...
...
dateipfad$ = grafik_name(x)
...
...
grafik = LoadImage(grafik_name(1))
...
...

Jetzt zeigt er mir allerdings an, dass grafik_name(1) = "" wäre, also, dass da nicht drinne wäre, dateipfad sieht aber bei mir so aus: C:\BlitzBasic3D ..... naja ehrlichgesagt habe ich keinen Plan, wieso das nicht funktioniert, ich hoffe ihr könnt mir helfen Sad

mfg satzzeichen

simi

BeitragSo, Aug 21, 2005 11:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht:
Code: [AUSKLAPPEN]
grafik_name(x) = dateipfad$


Sonst hast du ja in grafik_name(x) logischerweise immer einen leeren String....

satzzeichen

BeitragSo, Aug 21, 2005 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Args, ich bin doof Sad, aber wenn ich den Code jetzt folgend abändere:
BlitzBasic: [AUSKLAPPEN]

Dim grafik_name(100)
x=1
...
...
grafik_name(x) = dateipfad$
...
...
grafik = LoadImage(grafik_name(1))
...
...
DrawImage grafik,5,5


Bringt er mir den Fehler "Image does not Exist", was is da los?! Ich kriegs echt nicht gebacken Sad( Rätsel schon seit Tagen an dem Problem alle Bilder aus einem ordner einzuladen, aber irgendwie scheitert es immer bei LoadImage oder so Sad(

der komplette Code:

http://www.johnesoft.de/quelle.txt

Ich kriegs echt nicht gebacken grr bittteeee helft mir Sad

mfg satzzeichen
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

simi

BeitragSo, Aug 21, 2005 11:44
Antworten mit Zitat
Benutzer-Profile anzeigen
also:
1. Die Grafiken sind ja im Ordner Grafik, also musst du sie auch von dort laden:
Code: [AUSKLAPPEN]
grafik = LoadImage("Grafiken"+grafik_name(1))

2. Du liest am Anfang 2 Mal ein File aus, und willst damit wahrscheinlich ".." und "." überlisten. Es könnte aber ein Problem geben, wenn das nicht die 2 ersten wären.....

cu simi

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Aug 21, 2005 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Array BlitzBasic: [AUSKLAPPEN]
Dim grafik_name(100)
werden nur Zahlen gespeichert, demnach sieht die Zeile
Code: [AUSKLAPPEN]
grafik_name(x) = dateipfad$

so aus was 0 ergibt!

Lösung:
BlitzBasic: [AUSKLAPPEN]
; endweder so...
Dim grafik_name$(100)
x=1
...
grafik_name$(x) = dateipfad$
...
grafik = LoadImage(grafik_name(1))
...
DrawImage grafik,5,5



;oder so...
Dim grafik_name%(100)
x=1
...
grafik_name(x) = LoadImage(dateipfad$ )
...
DrawImage grafik_name(x),5,5
[BB2D | BB3D | BB+]

satzzeichen

BeitragSo, Aug 21, 2005 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
1.Klappt nicht, habe sogar versucht den kompletten Pfad zu laden, klappt alles nicht Sad und das im richtigen code und in der probiervariante nicht!Ich bin ratlos!!!

2.Jo, dafür lasse ich mir später was einfallen!
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

satzzeichen

BeitragSo, Aug 21, 2005 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Rallimen, gute Idee hatte ich auch schon probiert, klappt aber nicht "Image does not Exist..."
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Aug 21, 2005 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann scheint der DateiPfad$ falsch zu sein!
[BB2D | BB3D | BB+]

satzzeichen

BeitragSo, Aug 21, 2005 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, der is richtig, ich habe extra mal die Dims durch $s ersetzt und per Debugger alles gecheckt, Dateipfad$ is dann immer "all.bmp" also die erste datei die ich im Ordner Grafiken habe ... ich hab auch probiert, nach deinem Lösungsvorschlag noch den kompletten Pfad dranzuhängen funktioniert auch nicht Sad
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Aug 21, 2005 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
dann schau mal in welchem Ordner du dich befindest mit
BlitzBasic: [AUSKLAPPEN]
AktuellerOrdner$= CurrentDir()

da bist du bestimmt im falschen Ordner!

Lösung:
Bein suchen der Bilder mußt du am besten den kompletten Pfad einlesen
Sieht dann etwa so aus!
BlitzBasic: [AUSKLAPPEN]
grafik_name$(1)=\"C:\MeinOrdner\BlitzprojectGame\GFX\all.BMP\"


Oder den aktuellen Ordner wechseln in den Unterordner mit
BlitzBasic: [AUSKLAPPEN]
chancedir (CurrentDir()+\"GFX\")
[BB2D | BB3D | BB+]

satzzeichen

BeitragSo, Aug 21, 2005 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist es auch nicht, im Code suche ich erst in welchem Ordner ich bin, so komme ich immer in den Projektordner. Dann hänge ich "Grafiken\" an und öffne den Ordner und erst dann lese ich die Datteien aus...
BlitzBasic: [AUSKLAPPEN]

x = 0
verzeichnispfad$ = CurrentDir()
grafik_ordner = ReadDir(verzeichnispfad$+\"Grafiken\\")
If grafik_ordner = 0 Then
Cls
Text 300,320,\"FEHLER, ORDNER 'GRAFIKEN' FEHLT!-PROGRAMM WIRD ABGEBROCHEN!\"
Text 423,360,\"BETÄTIGEN SIE EINE TASTE!\"
Flip
WaitKey
End
EndIf
dateipfad$ = NextFile(grafik_ordner)
dateipfad$ = NextFile(grafik_ordner)
dateipfad$ = NextFile(grafik_ordner)
Repeat
grafik_nummer% = grafik_nummer% + 1
grafik_name(x) = dateipfad$
;Stop
x = x + 1
dateipfad$ = NextFile(grafik_ordner)
Until dateipfad$ = \"\"
CloseDir grafik_ordner


Und das kanns schon garnicht sein, weil dateipfad$ etwas findet und zwar genau das, was es suchen soll!
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Aug 21, 2005 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht ja richtig nach einer SpezielFunction aus, hab das mal auf den Standart abgeändert, was dann auch nicht soviele Probs macht!



BlitzBasic: [AUSKLAPPEN]
Dim grafik_name$(???)
x = 0
verzeichnispfad$ = CurrentDir()
grafik_ordner = ReadDir(verzeichnispfad$+\"Grafiken\\")

If grafik_ordner = 0 Then
Cls
Text 300,320,\"FEHLER, ORDNER 'GRAFIKEN' FEHLT!-PROGRAMM WIRD ABGEBROCHEN!\"
Text 423,360,\"BETÄTIGEN SIE EINE TASTE!\"
Flip
WaitKey
End
EndIf

Repeat ; einlesen der Pfade
dateipfad$ = NextFile (grafik_ordner)
If dateipfad$ = \"\" Then Exit ; keine daten mehr vorhanden
If FileType (Pfad$ + dateipfad$ ) = 1 Then ; Datei gefunden
grafik_nummer% = grafik_nummer% + 1 ; evt über
grafik_name$(x) = verzeichnispfad$ + dateipfad$ ; pfad speichern
x = x + 1
End If
Forever
CloseDir (grafik_ordner)


;TEST AUSGABE
For t= 0 To 20
Print grafik_name$(t)
Next
WaitKey
[BB2D | BB3D | BB+]

satzzeichen

BeitragSo, Aug 21, 2005 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Methode sieht zwar besser aus, aber unglaublicherweise gibts jetzt den Fehler, dasser anzeigt verzeichnispfad$ = "" ?!?! Ich habe es 3 mal getestet, mit versch. BB Files und ehrlichgesagt kann man ja bei der Zeile verzeichnispfad$ = CurrentDir() keine Fehler machen?!Hä?! Ich raffs echt nicht Sad wieso macht er das nicht?! Das ist ja fast wie wenn ich sage:

a = 1
print a
waitkey

Und der sagt mir a=0 -.-

mfg Satzzeichen
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Aug 21, 2005 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreibfehler der Variablen?
[BB2D | BB3D | BB+]

satzzeichen

BeitragSo, Aug 21, 2005 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn er direkt nach

verzeichnispfad$ = CurrentDir()

im Debugger anzeigt, dass das nicht geklapt hat?!
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Aug 21, 2005 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo satzzeichen, meinst du so etwas? Habe mich mal hingesetzt, um dem Problem ein Ende zu bereiten. Hoffe, daß ich damit helfen kann.

Code: [AUSKLAPPEN]
dateiname$=""
Dim dateiliste$(999)
verzeichnis=ReadDir(CurrentDir()+"Grafiken\")
position%=0




;VERZEICHNIS EINLESEN
Repeat
 dateiname=NextFile$(verzeichnis)
 If dateiname="" Then Exit
 If Right$(dateiname,4)=".bmp" Then
  dateiliste(position)=dateiname
  position=position+1
 End If
Forever
CloseDir verzeichnis




;DATEINAMENAUSGABE
For position=0 To 999
 If Not dateiliste(position)="" Then
  Print ">>"+position+">>"+dateiliste(position)+"<<<<"
  Delay 50
 End If
Next

FlushKeys
WaitKey
End

/EDIT-> CurrentDir() ist zB [C:\Programme\Blitz 3D\tmp] wenn der Code in einer neuen Section eingetragen aber nicht abgespeichert wird.
Ansonsten ist es dort wo die das Programm gespeichert wurde [.exe/.bb].

satzzeichen

BeitragSo, Aug 21, 2005 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah hectic du bist genial! Aber soweit war ich fast schon mal, dass Problem ist, dass ich nicht weis wie ich jetzt das Bild einlade, so z.B. geht es nicht:

BlitzBasic: [AUSKLAPPEN]

Graphics 1024,768,32,2;<---neu
SetBuffer BackBuffer();<---neu
Cls;<---neu

dateiname$=\"\"
Dim dateiliste$(999)
verzeichnis=ReadDir(CurrentDir()+\"Grafiken\\")
position%=0




;VERZEICHNIS EINLESEN
Repeat
dateiname=NextFile$(verzeichnis)
If dateiname=\"\" Then Exit
If Right$(dateiname,4)=\".bmp\" Then
dateiliste(position)=dateiname
position=position+1
End If
Forever
CloseDir verzeichnis




;DATEINAMENAUSGABE
For position=0 To 999
If Not dateiliste(position)=\"\" Then
Print \">>\"+position+\">>\"+dateiliste(position)+\"<<<<\"
Delay 50
End If
Next

test = LoadImage(dateiliste(1));<---neu
DrawImage test,5,5;<---neu
Flip;<---neu

FlushKeys
WaitKey
End


Wie aber dann?=!
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

satzzeichen

BeitragSo, Aug 21, 2005 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, das letzte war mein Fehler, es fehlte ein "Grafiken\" *grins*

ICH DANKE ALLEN DIE MIR IN DEN 3 POSTS GEHOLFEN HABEN DIESES PROBLEM ZU LÖSEN!

Timo
Simu
Rallimen
hectic

und allen anderen natürlich auch Smile
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group