[Gambas-user] reading files

Gianluigi bagonergi at ...626...
Thu Jul 20 13:04:46 CEST 2017


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
>



More information about the User mailing list