[Gambas-user] reading files

Shane buster6seven at ...626...
Thu Jul 20 13:16:22 CEST 2017


with the code i was trying to adapt you can't

i was getting strange values eg.

a struct size of 208 when it was meant to be 128 and for some strange 
reason get end of file

when seeking to eof less header even if i backed up more than the 208 bytes

i can see that tony didn't right it i should of said did he convert it 
to gambas ?

i think this should be in the farm ?




On 20/07/17 21:04, Gianluigi wrote:
> 2017-07-20 12:09 GMT+02:00 Shane <buster6seven at ...626...>:
>
>> yep can't use structs have to do like tony's code works perfect thanks
>> again tony
>>
> mmmmh are you sure?
>
>
>> p.s is this your code ?
>>
> No, but you can easily see who wrote it :)
>
>
>>
>>
>> On 20/07/17 19:56, Gianluigi wrote:
>>
>>> Right ... and a look here too [0]
>>>
>>> Ciao :)
>>> Gianluigi
>>>
>>> [0] http://www.gambas-it.org/smf/index.php?topic=5794.msg41793#msg41793
>>>
>>> 2017-07-20 3:15 GMT+02:00 Shane <buster6seven at ...626...>:
>>>
>>> thanks tony sounds like just what i needed i will take a look
>>>> cheers
>>>>
>>>>
>>>>
>>>> On 19/07/17 22:34, Tony Morehen wrote:
>>>>
>>>> I've attached an archive containing the code I use to read v1 and v2 MP3
>>>>> tags and other MP3 info including bitrates (fixed and VBR), sampling
>>>>> rates
>>>>> and number of channels.  v1 tags are pretty staightforward to read if
>>>>> you
>>>>> don't try to read the structure directly, but by each element of the
>>>>> structure at a time.  Some tips:
>>>>>
>>>>> 1) Numeric elements (bytes, bytearrays, shorts, integers, longs) can be
>>>>> read directly from the stream. ie  (4 byte Integer) = Read #Stream As
>>>>> Integer.  Gambas can handle little endian/big endian issues.
>>>>>
>>>>> 2) Fixed length strings must be handled in a two stage process. First,
>>>>> the required string length number of bytes is read into a byte array.
>>>>> This
>>>>> byte array is then converted to a string. Sample code:
>>>>>
>>>>>     Dim Bytes As New Byte[StringLength]
>>>>>     Bytes.Read(Stream)
>>>>>     FixedString = Bytes.ToString()
>>>>>
>>>>> Note: Bytes.ToString stops the string conversion at the first null or at
>>>>> the end of the array.  Therfore, you don't have to worry about
>>>>> null-terminated strings.
>>>>>
>>>>> v2 tags are more complicated, particularly since the tags can be ascii,
>>>>> either kind of utf16, or utf8 encoding.  The code I sent has been tested
>>>>> with over 10,000 mp3 files has seems to have no issues.
>>>>>
>>>>>
>>>>> On 2017-07-19 12:33 AM, Shane wrote:
>>>>>
>>>>> thank you Gian i did take a rest and read but alas it did not help
>>>>>> as far as i see it he is saying don't use binary file for fixed length
>>>>>> strings
>>>>>>
>>>>>> but as this is an mp3 file tag witch i have no control i am doomed
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 18/07/17 19:22, Gianluigi wrote:
>>>>>>
>>>>>> Why do not you take a moment of rest and read what Tobias Boege
>>>>>>> recommend
>>>>>>> me in the discussion [0] I told you here [1]?
>>>>>>>
>>>>>>> [0]
>>>>>>> http://gambas.8142.n7.nabble.com/Random-access-files-with-fi
>>>>>>> xed-length-string-td50880.html
>>>>>>> [1] http://gambas.8142.n7.nabble.com/vb-code-td59764.html
>>>>>>>
>>>>>>> 2017-07-18 9:04 GMT+02:00 Shane <buster6seven at ...626...>:
>>>>>>>
>>>>>>> I am very confused from the docs
>>>>>>>
>>>>>>>> _Variable_ *= READ* [ *#* _Stream_ ] *AS* _Datatype_
>>>>>>>>
>>>>>>>> _Variable_ *= READ* [ *#* _Stream_ *,* ] _Length_
>>>>>>>>
>>>>>>>> so wouldn't it be_
>>>>>>>> _
>>>>>>>>
>>>>>>>> IDtag = read #hfile  as ID3v1_TAG  ?
>>>>>>>>
>>>>>>>> with doesn't work by the way
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 18/07/17 12:44, nando_f at ...951... wrote:
>>>>>>>>
>>>>>>>> I think
>>>>>>>>
>>>>>>>>>             Read #hfile, IDtag, ID3v1_TAG
>>>>>>>>> should be
>>>>>>>>>             Read #hfile, IDtag as ID3v1_TAG
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Open WebMail Project (http://openwebmail.org)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------- Original Message -----------
>>>>>>>>> From: Shane <buster6seven at ...626...>
>>>>>>>>> To: gambas-user at lists.sourceforge.net
>>>>>>>>> Sent: Tue, 18 Jul 2017 10:50:43 +1000
>>>>>>>>> Subject: Re: [Gambas-user] reading files
>>>>>>>>>
>>>>>>>>> i don't know what i am doing wrong
>>>>>>>>>
>>>>>>>>> Public Struct ID3v1_TAG '(128 bytes)
>>>>>>>>>>           Tag[3] As String               'always TAG
>>>>>>>>>>           Title[30] As String             'title, 30 characters
>>>>>>>>>>           Artist[30] As String           'artist, 30 characters
>>>>>>>>>>           Album[30] As String           'album, 30 characters
>>>>>>>>>>           Year[4] As String              'year, 4 characters
>>>>>>>>>>           Comment[30] As String          'comment, 30 characters (or
>>>>>>>>>> 28 if
>>>>>>>>>> track# included)
>>>>>>>>>>           Genre As Byte                   'genre, 255 for none
>>>>>>>>>> defined
>>>>>>>>>> End Struct
>>>>>>>>>>
>>>>>>>>>> Private Sub GetID3v1(File As String)
>>>>>>>>>>          Dim IDtag As ID3v1_TAG
>>>>>>>>>>          Dim hfile As File
>>>>>>>>>>
>>>>>>>>>>          hfile = Open File For Read
>>>>>>>>>>
>>>>>>>>>>              '
>>>>>>>>>>              'read the tag
>>>>>>>>>>              ' seek to end of less tag size
>>>>>>>>>>
>>>>>>>>>>              Read #hfile, IDtag, ID3v1_TAG
>>>>>>>>>>
>>>>>>>>>> here i get IDtag is NULL
>>>>>>>>>>
>>>>>>>>>> On 18/07/17 05:05, nando_f at ...951... wrote:
>>>>>>>>>>
>>>>>>>>>> Yes it is possible, I do it. here is some code (incomplete)
>>>>>>>>>>
>>>>>>>>>>> -Nando (Canada)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ' top of class file
>>>>>>>>>>> Public Struct recstruc
>>>>>>>>>>>        _a as integer
>>>>>>>>>>>        _b as integer
>>>>>>>>>>>        _c as integer
>>>>>>>>>>> end struct
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ' a function
>>>>>>>>>>> public function openAfile(filename as string) as file
>>>>>>>>>>>
>>>>>>>>>>> dim hfile as file
>>>>>>>>>>> dim arec as recstruc
>>>>>>>>>>>
>>>>>>>>>>> hfile = open filename for read write create
>>>>>>>>>>>
>>>>>>>>>>> with arec   'some values to write.
>>>>>>>>>>>        ._a = 1
>>>>>>>>>>>        ._b = 22
>>>>>>>>>>>        ._c = 333
>>>>>>>>>>> end with
>>>>>>>>>>>
>>>>>>>>>>> write #hfile, arec as recstruc
>>>>>>>>>>>
>>>>>>>>>>> 'if you position the hfile pointer back to zero, you can...
>>>>>>>>>>> read #hfile, arec as recstruc
>>>>>>>>>>>
>>>>>>>>>>> close #hfile
>>>>>>>>>>>
>>>>>>>>>>> end
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Open WebMail Project (http://openwebmail.org)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ---------- Original Message -----------
>>>>>>>>>>> From: T Lee Davidson <t.lee.davidson at ...626...>
>>>>>>>>>>> To: gambas-user at lists.sourceforge.net
>>>>>>>>>>> Sent: Sun, 16 Jul 2017 12:42:35 -0400
>>>>>>>>>>> Subject: Re: [Gambas-user] reading files
>>>>>>>>>>>
>>>>>>>>>>> On 07/16/2017 06:57 AM, Shane wrote:
>>>>>>>>>>>
>>>>>>>>>>> given this example
>>>>>>>>>>>>> PRIVATE SUB BinaryRead(FilePath AS String)
>>>>>>>>>>>>>         DIM binaryFile AS File
>>>>>>>>>>>>>         DIM i AS Integer
>>>>>>>>>>>>>         DIM b AS Byte
>>>>>>>>>>>>>         DIM s AS Short
>>>>>>>>>>>>>         DIM s1 AS String
>>>>>>>>>>>>>         DIM s2 AS String
>>>>>>>>>>>>>         ' Read binary file
>>>>>>>>>>>>>         binaryFile = OPEN FilePath FOR READ
>>>>>>>>>>>>>         READ #binaryFile, i
>>>>>>>>>>>>>         READ #binaryFile, b
>>>>>>>>>>>>>         READ #binaryFile, s
>>>>>>>>>>>>>         READ #binaryFile, s1
>>>>>>>>>>>>>         READ #binaryFile, s2
>>>>>>>>>>>>>         CLOSE #binaryFile
>>>>>>>>>>>>>         ' Display results
>>>>>>>>>>>>>         PRINT i
>>>>>>>>>>>>>         PRINT b
>>>>>>>>>>>>>         PRINT s
>>>>>>>>>>>>>         PRINT s1
>>>>>>>>>>>>>         PRINT s2
>>>>>>>>>>>>> END
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> is there a way for gambas to read a struct of all these
>>>>>>>>>>>>> variables
>>>>>>>>>>>>> in one read ?
>>>>>>>>>>>>>
>>>>>>>>>>>>> You may have hinted at the solution within your question. Have
>>>>>>>>>>>>> you
>>>>>>>>>>>>>
>>>>>>>>>>>>> considered
>>>>>>>>>>>> using a Structure?
>>>>>>>>>>>>
>>>>>>>>>>>> http://gambaswiki.org/wiki/lang/read :
>>>>>>>>>>>> "... reads the stream Stream as binary data whose type is
>>>>>>>>>>>> specified by
>>>>>>>>>>>> the
>>>>>>>>>>>> Datatype argument."
>>>>>>>>>>>>
>>>>>>>>>>>> "The returned datatype can be one of the following: NULL,
>>>>>>>>>>>> Boolean,
>>>>>>>>>>>> Byte, Short,
>>>>>>>>>>>>       Integer, Long, Pointer, Single, Float, Date, String,
>>>>>>>>>>>> Variant,
>>>>>>>>>>>> any
>>>>>>>>>>>> Array,
>>>>>>>>>>>>       Collection or structure."
>>>>>>>>>>>>
>>>>>>>>>>>> http://gambaswiki.org/wiki/lang/structdecl
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Lee
>>>>>>>>>>>>
>>>>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>>>> ------------------
>>>>>>>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>>>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Gambas-user mailing list
>>>>>>>>>>>> Gambas-user at lists.sourceforge.net
>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>>>>>>>
>>>>>>>>>>>> ------- End of Original Message -------
>>>>>>>>>>>>
>>>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>>> ------------------
>>>>>>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Gambas-user mailing list
>>>>>>>>>>> Gambas-user at lists.sourceforge.net
>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>>>>>>
>>>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>>>
>>>>>>>>>> ------------------
>>>>>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Gambas-user mailing list
>>>>>>>>>> Gambas-user at lists.sourceforge.net
>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>>>>>
>>>>>>>>>> ------- End of Original Message -------
>>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------
>>>>>>>>> ------------------
>>>>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>>>>> _______________________________________________
>>>>>>>>> Gambas-user mailing list
>>>>>>>>> Gambas-user at lists.sourceforge.net
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>
>>>>>>>> ------------------
>>>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>>>> _______________________________________________
>>>>>>>> Gambas-user mailing list
>>>>>>>> Gambas-user at lists.sourceforge.net
>>>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>>>
>>>>>>>> ------------------------------------------------------------
>>>>>>>> ------------------
>>>>>>>>
>>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>>> _______________________________________________
>>>>>>> Gambas-user mailing list
>>>>>>> Gambas-user at lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>>
>>>>>>>
>>>>>> ------------------------------------------------------------
>>>>>> ------------------
>>>>>>
>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>> _______________________________________________
>>>>>> Gambas-user mailing list
>>>>>> Gambas-user at lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>
>>>>>>
>>>>> ------------------------------------------------------------
>>>>> ------------------
>>>>> Check out the vibrant tech community on one of the world's most
>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Gambas-user mailing list
>>>>> Gambas-user at lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>
>>>>> ------------------------------------------------------------
>>>> ------------------
>>>> Check out the vibrant tech community on one of the world's most
>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>> _______________________________________________
>>>> Gambas-user mailing list
>>>> Gambas-user at lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>
>>>> ------------------------------------------------------------
>>> ------------------
>>> Check out the vibrant tech community on one of the world's most
>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>> _______________________________________________
>>> Gambas-user mailing list
>>> Gambas-user at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user





More information about the User mailing list