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 <buster6se...@gmail.com>: > 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 <buster6se...@gmail.com>: >>>> >>>> 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, nand...@nothingsimple.com 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 <buster6se...@gmail.com> >>>>>> To: gambas-user@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, nand...@nothingsimple.com 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.david...@gmail.com> >>>>>>>> To: gambas-user@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@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@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@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@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@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@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@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@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@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@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user