Alle Grafiken in einem ordner auslesen?!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

satzzeichen

Betreff: Alle Grafiken in einem ordner auslesen?!

BeitragSa, Aug 20, 2005 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich möchte alle bmp Dateien in einem Ordner auslesen, aber leider klappt das wieder nicht Smile daher benötige ich eure professionelle Hilfe!!!

Code: [AUSKLAPPEN]

.....
.....
Global grafik_nummer% = 0;wichtige variable
Global grafik$ = "grafik";wichtige variable
.....
.....
verzeichnispfad$ = CurrentDir();wo bin ich?
grafik_ordner = ReadDir(verzeichnispfad$+"Grafiken\");da gehts hin!
Repeat ;wir müssen das öfters machen...
   dateipfad$ = NextFile(grafik_ordner);pfad der grafikdatei
   If Right(dateipfad$,3) = "bmp" Then;nur wenns BMP is...
      grafik_nummer% = grafik_nummer% + 1;versch. nummern
      grafik$ = grafik$ + Str$(grafik_nummer%);alles in ein string
      grafik$ = LoadImage(verzeichnispfad$+dateipfad$);einladen
   EndIf
Until dateipfad$ = "";wenn keine datei mehr da is gehts weiter..
CloseDir grafik_ordner ;ordner zumachen


Hab gleich noch paar Kommentare geschrieben, ich wette es sind wieder 100te Fehler drinne aber naja mal schaun, ich hoffe ihr könnt mir helfen ^^
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci
 

Timo

BeitragSa, Aug 20, 2005 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ich mache das immer gerne mit Types Wink
Zu der Funktion Grafik_Laden kann man nämlich jetzt problemlos noch weitere Funktionen hinzufügen, wie Grafik_Anzeigen oder Grafik_Entfernen, etc.

BlitzBasic: [AUSKLAPPEN]

Global grafik_nummer% = 0;wichtige variable


Type tGrafik
Field id
Field pfad$
Field pointer
End Type




Function Grafik_Laden()
Local ordner
Local pfad$
Local g.tGrafik
ordner = ReadDir(CurrentDir() +\"Grafiken\\")
Repeat
pfad$ = NextFile(ordner)
If Lower(Right(pfad$,3)) = \"bmp\" Then
grafik_nummer% = grafik_nummer% + 1
g = New tGrafik
g\id = grafik_nummer%
g\pfad$ = pfad$
g\pointer = LoadImage(pfad$)
EndIf
Until dateipfad$ = \"\"
CloseDir grafik_ordner
End Function


ist nur ein beispiel, du musst es so nicht machen Wink
außerdem lädt diese Funktion (wie der quelltext oben) alle Bilder in den Speicher, das ist meist unerwünscht!!

satzzeichen

BeitragSa, Aug 20, 2005 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, Types waren noch nie meine Stärke *gg* das leuchtet jetzt alles mehr oder wenig ein, nur wie kann ich die gespeicherten Bilder dann verwenden?! Also z.B. mit Drawimage?!

DrawImage *unbekannt*,5,5

Sad ich meine, du speicherst ja die ID, also sollte ja eine verifizierung aufgrund dieser nichts im weg stehen, nur wie?!?!

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

Timo

BeitragSa, Aug 20, 2005 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, erweitere es halt um diese Funktion:
BlitzBasic: [AUSKLAPPEN]
Function Grafik_Zeichnen(id,x,y)
Local g.tGrafik
For g = Each tGrafik
If g\id = id Then
DrawImage g\pointer, x,y
EndIf
Next
End Function


Diese Art der Programmierung macht nur sinn, wenn du nicht weißt, wie viele Bilder du laden sollst. Andernfalls verwende eigene Variablennamen für die Bilder, oder benutze Arrays. An diese Funktion kannst du jetzt zum Beispiel die id und die Position übergeben, und er zeichnet das Bild in den Ausgewählten Buffer Smile

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Aug 20, 2005 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Allerdings wird der Grafikspeicher stark gefordert wenn es zuviel Bilder sind (?Digitalkamara),
da die Schleife alles mit loadimage einlädt!
[BB2D | BB3D | BB+]

satzzeichen

BeitragSa, Aug 20, 2005 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm irgendwie steige ich da jetzt garnicht mehr durch mit den Types ^^ gerade ein Tutorial geladen, aber nicht so recht kapiert. Gibt es noch einen einfachereren Weg?! Und wie schaffe ich es, dass der Grafikspeicher nicht so stark belastet wird?!
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci
 

Timo

BeitragSa, Aug 20, 2005 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
wie gesagt, speichere die DateiPfade, und lade die Bilder erst mit LoadImage() in den Speicher, wenn du sie auch benötigst. Eine wichtige Frage ist halt: weißt du, wie viele Bilder du im Ordner hast? Wenn ja: kannst du das einfacher mit Arrays hinbekommen, wenn nein: fallen mir gerade nur types ein, mit denen man das am einfachsten lösen könnte Wink
Was willst du denn genau damit machen?

satzzeichen

BeitragSa, Aug 20, 2005 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich erklärs mal genauer, ich mache seit einiger Zeit einige sagen wir mal kleine 2D Filme, bessergesgat Comics in BB3D, da diese aber immer komplexer werden sammelt sich jetzt haufen Sphagetthicode an, ich meine für 1 Minute Laufzeit braucht man ca. 300-500 Zeilen Code! Und da beschränkt man sich aufs primitivste Sad

Daher ist es mir eingefallen einen Editor zu basteln, in dem man das ganze mit Drag&Drop einfach zusammenbasteln kann. Nun brauche ich dazu die Grafiken und daher soll das Programm aus bestimmten Ordnern die Grafiken laden und eine Art "Verweis" im Programm dann selbst legen, so dass man die Grafik dann jederzeit benutzen kann.

Ich kann euch gerne noch mehr Infos geben, nur müsste ich da wissen was ihr noch wissen wollt ^^ naja vieleicht kennt ihr da ja eine simple Lösung?! Es sind auf jeden Fall unterschiedl. viele Grafiken im Ordner . . .

Naja und vieleicht könntet ihr mir die Sache mit den Types näher erklären? Irgendwie ergibt das bei mir nicht sonderbar viel Sinn Sad

Laughing Grüsle Satzzeichen!
Der erhabene Geist schafft am meisten, wenn er am wenigsten arbeitet. Leonardo da Vinci

satzzeichen

BeitragSo, Aug 21, 2005 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
*grins* Problem gelöst Smile ich lasse einfach vorher in einer Schleife zählen, wieviele Dateien im Ordner sind, so kann ichs danach auch per DIM einladen!
Danke an euch alle!
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