It would be useful to have more file reading command in blitz like readlong and such, for those trying to read game data file and make their own.
Request
Blitz3D Forums/Blitz3D Programming/Request There is a ReadInt command already.
ReadByte
ReadBytes
ReadFloat
ReadInt (readlong)
ReadLine
ReadShort
ReadString
What else do you want?
ReadBytes
ReadFloat
ReadInt (readlong)
ReadLine
ReadShort
ReadString
What else do you want?
They work fine for me! What are you trying to do? Wanna post some code if you're havin trouble???
For file IO you have to interpret the machine code directly.
11000010010100010111101010010101010101011010010010110100010111010100101010100101010100101010101010010110110011101000
11000010010100010111101010010101010101011010010010110100010111010100101010100101010100101010101010010110110011101000
I'm having the main problem with string at present in a file i am reading there are lots of other formats each the size of 4 but can only read on file format with a pile of other things after it, how do i read the other formats?
oh, and here is my code for the file so far:
Graphics 640,480,32,2
File=ReadFile("level0_Final.dat")
SeekFile(file,20)
librects=ReadInt(file)
block1=ReadInt(file)
block2=ReadInt(file)
datastart=ReadInt(file)
datasize=ReadInt(file)
nameoffset=ReadInt(file)
namesize=ReadInt(file)
unknown=ReadInt(file)*ReadInt(file)
testt=ReadInt(file)
test$=ReadString(file)+testt
SeekFile(file,4)
;offset=Read
Print librects
Print block1
Print block2
Print datastart
Print datasize
Print nameoffset
Print namesize
Print unknown
Print test$
Print test1$
WaitKey()
Graphics 640,480,32,2
File=ReadFile("level0_Final.dat")
SeekFile(file,20)
librects=ReadInt(file)
block1=ReadInt(file)
block2=ReadInt(file)
datastart=ReadInt(file)
datasize=ReadInt(file)
nameoffset=ReadInt(file)
namesize=ReadInt(file)
unknown=ReadInt(file)*ReadInt(file)
testt=ReadInt(file)
test$=ReadString(file)+testt
SeekFile(file,4)
;offset=Read
Print librects
Print block1
Print block2
Print datastart
Print datasize
Print nameoffset
Print namesize
Print unknown
Print test$
Print test1$
WaitKey()
Oh, i almost forgot if this does not mke anysence to you (i mean like what the file is about) i have the specs for it, i just need to know how to get the part i am on to work.
:(
Are you having trouble getting through this 'unknown' block of data down to testt?
unknown=ReadInt(file)*ReadInt(file)
testt=ReadInt(file)
test$=ReadString(file)+testt
It looks like unknown would fill a 2D array or image. What do you get out of testt and test$? zeros? I'd step through it with the debugger and try to orient myself in the file. If needed hack up the file by putting recognizable values in the different locations.
And you could upload a sample and spec if you wanted more help.
unknown=ReadInt(file)*ReadInt(file)
testt=ReadInt(file)
test$=ReadString(file)+testt
It looks like unknown would fill a 2D array or image. What do you get out of testt and test$? zeros? I'd step through it with the debugger and try to orient myself in the file. If needed hack up the file by putting recognizable values in the different locations.
And you could upload a sample and spec if you wanted more help.
Slightly OT-
Goober. I agree with you... but Nacra has a good point. You can use the {codebox} code goes here... {/codebox} command to load a lot of code without taking much scroll space in the topic... the "{" symbol is actually the bracket :[" ie: "[]" instead of "{}"
Goober. I agree with you... but Nacra has a good point. You can use the {codebox} code goes here... {/codebox} command to load a lot of code without taking much scroll space in the topic... the "{" symbol is actually the bracket :[" ie: "[]" instead of "{}"
ok thanks so far here are the file specs:
with the testt and test$ the testt is to get a value in this case (4) and add it onto the test$ to display the file type but there are loads of files in it.
== DAT - Oni == first is header (64b), then lib follows, then some unknown block1 & block2, then data and at the end there is a name block name offset size note Header: ident 0 20 1F 27 DC 33 DF BC 03 00 31 33 52 56 40 00 14 00 10 00 08 00 lib recs 20 4 long block1 recs 24 4 long block2 recs 28 4 long data start 32 4 long data size 36 4 long names offset 40 4 long names size 44 4 long ? 48 4*4 longs Lib Rec (20 bytes): type 0 4 string offset 4 4 relative name offset 8 4 relative size 12 4 ? 16 2 short ? 18 2 short Names Block Rec (? bytes): type 0 4 string name 4 ? ASCIZ string
with the testt and test$ the testt is to get a value in this case (4) and add it onto the test$ to display the file type but there are loads of files in it.
:|
How about just jumping straight down into your lib block; skip all of that other reading for now. Does this get you the 'type' value?
SeekFile(file,48+4*4+1)
type=ReadString(file)
;testt=ReadInt(file)
;test$=ReadString(file)+testt
SeekFile(file,48+4*4+1)
type=ReadString(file)
;testt=ReadInt(file)
;test$=ReadString(file)+testt
no, it doesn't work, dunno why though.