Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mehrere dateien in einer

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 26.01.2007, 22:28    Titel: Mehrere dateien in einer Antworten mit Zitat

Hi Leute,
Ich wollte fragen, ob einer von euch weiß wie man meherere (bild-)dateien in eine zusammenfasst. Ich meine:
Wir haben einen Ordner "images"
dortdrin sind die dateien "credits.bin", "hi.bin", "gameover.bin", "err.bin","map1.bin","map2.bin","egg1.bin","egg2.bin","egg3.bin" diese Dateien sind exakt 614405 Bytes groß, bis auf die "egg3.bin", diese ist exakt 1572869 Bytes groß. Ich möchte nun all diese Dateien in eine reinpacken (unkompriemiert!!!!). Ich habe mir bereits ein QB-Prog geschrieben ,welches alle Dateien nacheinander in die "images\images.bin" schreibt. (Dieses Programm habe ich jedoch mit FreeBasic kompiliert mit den Augen rollen )

Code:

DIM SHARED InDateien(1 TO 15) AS STRING
'DIM SHARED ByDateien(1 TO 15) AS LONG


OPEN "images\images.bin" FOR OUTPUT AS #1
OPEN "LOF_LOG.TXT" FOR INPUT AS #2


n% = 1
DO WHILE NOT EOF(2)
n% = n% + 1
IF n% = 14 THEN EXIT DO
dummy$ = ""
LINE INPUT #2, InDateien$(n%)
'GET #2, , ByDateien&(n%)
LINE INPUT #2, dummy$
LOOP

OPEN "IMAGES\HI.BIN" FOR BINARY AS #200
OPEN "images\tlgocr.bin" FOR BINARY AS #201
OPEN "images\tlgo1.bin" FOR BINARY AS #202
OPEN "images\tlgo2.bin" FOR BINARY AS #203
OPEN "images\tlgo3.bin" FOR BINARY AS #204
OPEN "images\tlgo4.bin" FOR BINARY AS #205
OPEN "images\egg1.bin" FOR BINARY AS #206
OPEN "images\egg2.bin" FOR BINARY AS #207
OPEN "images\egg3.bin" FOR BINARY AS #208
OPEN "images\l1pfort.bin" FOR BINARY AS #209
OPEN "images\hi.bin" FOR BINARY AS #210
OPEN "images\gameover.bin" FOR BINARY AS #211
OPEN "images\err.bin" FOR BINARY AS #212
OPEN "images\map1.bin" FOR BINARY AS #213
OPEN "images\map2.bin" FOR BINARY AS #214
OPEN "images\kara.bin" FOR BINARY AS #215

FOR n% = 200 TO 215

DO WHILE NOT EOF(n%)
cache$ = ""
cache$ = SPACE$(100)
GET #n%, , cache$
PUT #1, , cache$
LOOP

NEXT n%


Das ist der Quellcode des Dateimachers. So weit so gut, nur leider weiß ich nicht wie ich mit den Bildanzeige-Routinen (siehe unten) das ganze wieder geordnet auf die reihe kriegen soll.

Quelltext der Bildanzeige-routinen:
Code:

SUB MakePic (FileName AS STRING)
'Werte ermitteln
CONST bpp% = 16
CONST xlen% = 1024
CONST ylen% = 768

'Bildschirminhalt in Datei speichern
OPEN FileName$ FOR BINARY AS #1

'Header schreiben
header$ = CHR$(bpp%) + MKI$(xlen%) + MKI$(ylen%)
PUT #1, 1, header$

'Bilddaten in Datei schreiben
FOR y% = 0 TO (ylen% - 1)
  CALL XGET(0, y%, (xlen% - 1), y%, zeile$)
  zeile$ = MID$(zeile$, 6)
  PUT #1, , zeile$
NEXT y%

CLOSE #1
END SUB

SUB ShowPic (FileNumber AS INTEGER)
picx% = 0
picy% = 0

'OPEN FileName$ FOR BINARY AS #1
'Header auslesen
header$ = SPACE$(5)
GET #1, , header$
bpp% = ASC(MID$(header$, 1, 1))
xlen% = CVI(MID$(header$, 2, 2))
ylen% = CVI(MID$(header$, 4, 2))

'Datenlänge berechnen
zeilenlen% = xlen% * (bpp% \ 8)

'Daten auf den Bildschirm bringen
FOR y% = 0 TO (ylen% - 1)
  zeile$ = SPACE$(zeilenlen%)
  GET #1, , zeile$
  zeile$ = CHR$(bpp%) + MKI$(xlen%) + MKI$(1) + zeile$
  CALL XPUT(picx%, picy% + y%, zeile$)
NEXT y%

CLOSE #1
END SUB
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9732
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.01.2007, 00:04    Titel: Antworten mit Zitat

Für sowas hatte ich damals die UGL-Lib verwendet: SVGA, Sound und tolle PAK-Dateien. Naja, das fehlt in der AK-Lib noch happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 27.01.2007, 03:24    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Für sowas hatte ich damals die UGL-Lib verwendet: SVGA, Sound und tolle PAK-Dateien. Naja, das fehlt in der AK-Lib noch happy


oh man,
grinsen
ich berichtige das mal kurz. Sowas gabs mal in der AK-LIB, und zwar in der Version 1.1. Aber da das niemand genutzt hat hab ich das wieder rausgenommen. happy
Das waren dann ".qll"-Dateien und man brauchte nur eine Angabe ala "c:\packet.qll/bild.bmp" machen.

2RT:
Damit mehrere Dateien in einer Datei archiviert werden gibt es mehrere Möglichkeiten.
Die eine Möglichkeit wäre das ändern der FAT mit dem Versuch das Dateiende auf die nächste Datei zu legen. Davon möchte ich aber aus Performancegründen abraten. grinsen

Eine weitere und bessere Möglichkeit ist das Einfügen von Zeilenmarken in die Datei.
Das einfachste ist vor jedem Bild in die Datei dessen Dateigröße zu schreiben.

das bedeutet das aus dem hier:
Code:

FOR n% = 200 TO 215

DO WHILE NOT EOF(n%)
cache$ = ""
cache$ = SPACE$(100)
GET #n%, , cache$
PUT #1, , cache$
LOOP

NEXT n%


das hier wird:
Code:

FOR n% = 200 TO 215

DO WHILE NOT EOF(n%)
filesize$=MKL$(LOF(n%))   'MKL = MakeLong = 4-Byte-String
PUT #1,,filesize$
cache$ = ""
cache$ = SPACE$(100)
GET #n%, , cache$
PUT #1, , cache$
LOOP

NEXT n%


So, Gesamtdatei fertig.
Wenn wir jetzt zum Beispiel ein bestimmtes Bild heraussuchen wollen, benötigen wir die Startposition des Bildes in der Datei.
Dabei hilft uns folgende kleine Schleife:
Code:

OPEN "images.bin" FOR BINARY AS #1
Bildernummer%=1   'Nummer des Bildes 1-x
start&=1

FOR i%=1 to Bildnummer%
  size$=SPACE$(4)
  GET #1,start&,size$
  if i% < Bildnummer% THEN
    start&=start&+CVL(size$)+4
  ELSE
    start&=start&+4
  END IF
NEXT i%
CLOSE #1


Nach dem Ausführen dieses Codes haben wir in der Variablen start& die genaue Position des Bildes. Diese müssen wir nun nur noch an die Bildanzeigeroutine weitergeben.
Code:

SUB ShowPic (FileNumber AS INTEGER, START&)
picx% = 0
picy% = 0

'OPEN FileName$ FOR BINARY AS #1
'Header auslesen
header$ = SPACE$(5)
GET #1, START&, header$
bpp% = ASC(MID$(header$, 1, 1))
xlen% = CVI(MID$(header$, 2, 2))
ylen% = CVI(MID$(header$, 4, 2))

'Datenlänge berechnen
zeilenlen% = xlen% * (bpp% \ 8)

'Daten auf den Bildschirm bringen
FOR y% = 0 TO (ylen% - 1)
  zeile$ = SPACE$(zeilenlen%)
  GET #1, , zeile$
  zeile$ = CHR$(bpp%) + MKI$(xlen%) + MKI$(1) + zeile$
  CALL XPUT(picx%, picy% + y%, zeile$)
NEXT y%

CLOSE #1
END SUB


Das heißt, einmal übergeben wir die Variable Start& an das Sub und einmal setzen wir start& für das erste GET für den Header ein.

So, wie immer alles ungetestet. happy

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1208

BeitragVerfasst am: 27.01.2007, 09:50    Titel: Antworten mit Zitat

is das nich sowas wie n unkomprimiertes TAR archiv??
vllt gibts ja da routinen
(dos zip??)
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 27.01.2007, 11:08    Titel: Antworten mit Zitat

Hi Leute,
DANKE AK !!! happy Ich werde das gleich mal testen ...
happy happy

===========EDIT=============
Okay, ersten Code mit FB kompiliert (wegen der zu vielen Dateien), macht ne' Images.bin (10,7MB). So ganz funzen tut's noch net (lila Streifen auf dem Bildschirm) aber ich denke wir sind auf dem richtigen Weg zur Lösung zwinkern

===========EDIT=============
Die Reihenfolge der Bilder + Exakte einzeldatei-größe (in Byte)
Code:

IMAGES\HI.BIN
614405
images\tlgocr.bin
614405
images\tlgo1.bin
614405
images\tlgo2.bin
614405
images\tlgo3.bin
614405
images\tlgo4.bin
614405
images\egg1.bin
614405
images\egg2.bin
614405
images\egg3.bin
1572869
images\l1pfort.bin
614405
images\hi.bin
614405
images\gameover.bin
614405
images\err.bin
614405
images\map1.bin
614405
images\map2.bin
614405
images\kara.bin
614405
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 27.01.2007, 12:57    Titel: Antworten mit Zitat

[OT]
Das is' aber keine spezielle Frage zu QB... zwinkern
[/OT]
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9732
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.01.2007, 13:34    Titel: Antworten mit Zitat

csde_rats, da du ja ein fleißger Besucher meiner Webseite bist happy, solltest du dir mal den Saga-Games Installer anschauen. Der läuft unter Quickbasic und macht auch eine Datei aus vielen, unkomprimiert.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 27.01.2007, 14:26    Titel: Antworten mit Zitat

Jo, habe ich ganz vergessen ...

================EDIT=============
Ne, das ist eigentlich nicht ganz das was ich suche ... ich möchte ja inprinzip mit seek #1, position& oder so ähnlich an eine dateistelle springen... um es dan mit ShowPic anzuzeigen (das bild lachen ) .Der installer ist im prinzip schon ein stück zu weit. nur irgendwie zeigt er mit AK's subs immer nur lila streifen an traurig . Der Installer braucht ja immer ne weile bisser entpackt hat ... und man kann ja nicht ne' einzelne datei wie mit open öffnen neutral . Natürlich nihts gegen deinen Intstaller, für's Installieren isser ja auch super happy happy .

@AK
Das ist schon eher das was ich suche, nur brauch ich kein "echtes" Dateiformat, welches man universell einsetzten kann zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9732
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.01.2007, 15:50    Titel: Antworten mit Zitat

Ja, OK, bei meinem Installer fehlt der "datei-index" am anfang, aber das kannst du umgehen:

vor jeder datei stehen name & länge. wenn nun dein programm nach einer datei sucht, schaut es, ob d er name stimmt. wenn ja, kann die AK-Lib an dieser stelle laden, wenn nicht, um <länge> bytes weitergehen, um den nächsten eintrag zu vergleichen zwinkern Du könntest allerdings auch eine "Tabelle" am anfang der datei anlegen, die alle dateinamen sowie deren offset und länge enthält, die,sagen wir mal, immer 1000 einträge fassen kann... damit's einfacher wird zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 27.01.2007, 20:50    Titel: Antworten mit Zitat

Hmmm,
Ich habe da jetzt noch mal überlegt, und mich an AK's und Jojo's Vorschläge orientiert:
Code:

dim header as string * 6
dim Daten(1 to 15) as string

OPEN "images\images.bin" FOR OUTPUT AS #1

header$ = "VOL0.1"
put #1,1,header$

Daten$(1) = "images\tlgocr.bin"
Daten$(2) = "images\tlgo1.bin"
Daten$(3) = "images\tlgo2.bin"
Daten$(4) = "images\tlgo3.bin"
Daten$(5) = "images\tlgo4.bin"
Daten$(6) = "images\egg1.bin"
Daten$(7) = "images\egg2.bin"
Daten$(8) = "images\l1pfort.bin"
Daten$(9) = "IMAGES\HI.BIN"
Daten$(10) = "images\gameover.bin"
Daten$(11) = "images\err.bin"
Daten$(12) = "images\map1.bin"
Daten$(13) = "images\map2.bin"
Daten$(14) = "images\kara.bin"
Daten$(15) = "images\egg3.bin"

OPEN "images\tlgocr.bin" FOR BINARY AS #201
OPEN "images\tlgo1.bin" FOR BINARY AS #202
OPEN "images\tlgo2.bin" FOR BINARY AS #203
OPEN "images\tlgo3.bin" FOR BINARY AS #204
OPEN "images\tlgo4.bin" FOR BINARY AS #205
OPEN "images\egg1.bin" FOR BINARY AS #206
OPEN "images\egg2.bin" FOR BINARY AS #207
OPEN "images\l1pfort.bin" FOR BINARY AS #208
OPEN "images\hi.bin" FOR BINARY AS #209
OPEN "images\gameover.bin" FOR BINARY AS #210
OPEN "images\err.bin" FOR BINARY AS #211
OPEN "images\map1.bin" FOR BINARY AS #212
OPEN "images\map2.bin" FOR BINARY AS #213
OPEN "images\kara.bin" FOR BINARY AS #214
OPEN "images\egg3.bin" FOR BINARY AS #215

FOR n% = 201 TO 215

put #1,,Daten$(n%)

DO WHILE NOT EOF(n%)
cache$ = SPACE$(100)
GET #n%, , cache$
PUT #1, , cache$
LOOP

NEXT n%


Ungetestet (Aber ich weiß, dass wenn sich das kompilieren lässt, dann mit FreeBasic 0.15 verwundert )
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9732
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.01.2007, 21:20    Titel: Antworten mit Zitat

das problem ist, wenn du die datei in qb erstellen möchtest, die orignaldateien immer "häppchenweise "auslesen musst - größte stringgröße ist da ja bekanntlich 32kb. Aber die Lösung mit FB is natürlich auch ganz praktisch. Allerdings musst du hier eventuell beachten, dass in freebasic folgendes gilt:

Code:

FB            QB
---------------------
INTEGER       LONG
LONG          LONG
SHORT         INTEGER

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 27.01.2007, 21:25    Titel: Antworten mit Zitat

Hmm, irgendwie wird die Zieldatei kleiner als alle Quelldateien neutral , obwohl das prog ja eigentlich noch daten hinzufügt. weinen weinen
Und durch
Code:
 Cache$ = Space$(100)
werden doch eh immer nur 100 Zeichen eingelesen! oder, nicht???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9732
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.01.2007, 21:48    Titel: Antworten mit Zitat

jo, aber aufpassen, dadruch werden die zieldaten immer größer, also es bleibt immer ein gewisser rest leer am ende zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 27.01.2007, 22:16    Titel: Antworten mit Zitat

Hi,

Zitat:
Hmm, irgendwie wird die Zieldatei kleiner als alle Quelldateien , obwohl das prog ja eigentlich noch daten hinzufügt.


Code:
OPEN "images\images.bin" FOR OUTPUT AS #1

->
Code:
OPEN "images\images.bin" FOR BINARY AS #1


oder kann man in FB auch in OUTPUT-Dateien put_ten?

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9732
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.01.2007, 22:29    Titel: Antworten mit Zitat

nö. output => print, binary => put
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 27.01.2007, 22:38    Titel: Antworten mit Zitat

Hmmm, also bei mir funzt' AK's Code irgendwie net.
Code:

DECLARE SUB MakeFile (FileName AS STRING, Killold AS INTEGER)
DECLARE SUB ShowPic (FileNumber AS INTEGER, Start&)
DECLARE SUB MakePic (FileName AS STRING)
DECLARE SUB Anfrage (FileNum AS INTEGER, WVFILE AS INTEGER)
'DIM SHARED Start&
DIM position&(1 TO 15)
ON ERROR GOTO shit

'FOR n% = 3 TO 14
'        position&(n%) = (614405) * n%
'        PRINT position&(n%)
'NEXT n%
'
'position&(1) = 1
'position&(2) = 614405 + 1
'position&(15) = position&(14) + 1572869
'
'OPEN "images\images.bin" FOR BINARY AS #1
'INPUT "Anzuzeigendes Bild (Nummer von 1 bis 15): ", Bild%
'CALL xscreen(&H111)
'ShowPic 1, position&(Bild%)


OPEN "images\images.bin" FOR BINARY AS #1
'Bildernummer%=1   'Nummer des Bildes 1-x
INPUT "Bild - ", Bildernummer%
Start& = 1

FOR i% = 1 TO Bildnummer%
  size$ = SPACE$(4)
  GET #1, Start&, size$
  IF i% < Bildnummer% THEN
    Start& = Start& + CVL(size$) + 4
  ELSE
    Start& = Start& + 4
  END IF
NEXT i%

CALL xscreen(&H111)
ShowPic 1, Start&

CLOSE #1

shit:
RESUME NEXT

SUB Anfrage (FileNum AS INTEGER, WVFILE AS INTEGER)
LenfFile& = 614405 * WVFILE%
SEEK FileNum%, LenfFile&
END SUB

SUB MakeFile (FileName AS STRING, Killold AS INTEGER)
NewFileNumber% = FREEFILE
IF Killold <> 0 THEN
   KILL FileName
   OPEN FileName$ FOR OUTPUT AS NewFileNumber%
   CLOSE NewFileNumber%
ELSEIF Killold = 0 THEN
   OPEN FileName$ FOR OUTPUT AS NewFileNumber%
   CLOSE NewFileNumber%
END IF
END SUB

SUB MakePic (FileName AS STRING)
'Werte ermitteln
CONST bpp% = 16
CONST xlen% = 1024
CONST ylen% = 768

'Bildschirminhalt in Datei speichern
OPEN FileName$ FOR BINARY AS #1

'Header schreiben
header$ = CHR$(bpp%) + MKI$(xlen%) + MKI$(ylen%)
PUT #1, 1, header$

'Bilddaten in Datei schreiben
FOR y% = 0 TO (ylen% - 1)
  CALL XGET(0, y%, (xlen% - 1), y%, zeile$)
  zeile$ = MID$(zeile$, 6)
  PUT #1, , zeile$
NEXT y%

CLOSE #1
END SUB

SUB ShowPic (FileNumber AS INTEGER, Start&)
picx% = 0
picy% = 0

'SEEK FileNumber%, Start&

'OPEN FileName$ FOR BINARY AS #1
'Header auslesen
header$ = SPACE$(5)
GET #1, Start&, header$
bpp% = ASC(MID$(header$, 1, 1))
xlen% = CVI(MID$(header$, 2, 2))
ylen% = CVI(MID$(header$, 4, 2))

'Datenl„nge berechnen
zeilenlen% = xlen% * (bpp% \ 8)

'Daten auf den Bildschirm bringen
FOR y% = 0 TO (ylen% - 1)
  zeile$ = SPACE$(zeilenlen%)
  GET #1, , zeile$
  zeile$ = CHR$(bpp%) + MKI$(xlen%) + MKI$(1) + zeile$
  CALL XPUT(picx%, picy% + y%, zeile$)
NEXT y%

'CLOSE #1
END SUB

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 27.01.2007, 22:46    Titel: Antworten mit Zitat

Also auf die Schnelle sehe ich folgendes:

Es werden zwei unterschiedliche Variablen verwendet für die Bildnummer.
einmal ist es Bildnummer% und einmal Bildernummer%.

Einmal diese Beiden Variablen auf eine einzige ändern.

Das erklärt auch das Verhalten da Show.Pic dann versucht ab Pos 1 ein Bild zu laden, was aber verkehrt ist da dort ja die Dateigröße noch steht.

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 27.01.2007, 23:19    Titel: Antworten mit Zitat

Danke AK,
Immerhin klappt es schon das erste Bild anzuzeigen lachen Hammer
Ansonsten wird man mal schauen müssen, wo da der Fehler liegt:
A) Beim erstellen der Datei
B) Beim erstellen der Position

==========================EDIT=======================

Neee, manchmal kann man das erste sehen, irgendwann mal das zweite, aber ansonsten nichts böse
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 28.01.2007, 19:35    Titel: Antworten mit Zitat

Hi Leute,
Ich konnte den Fehler nicht finden.
weinen weinen weinen
böse böse böse

=======================EDIT=====================

[ot]SInd eigentlich FB OBJ Dateien mit QB OBJ Dateien komatibel?[/ot]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz