2017-07-20 12:09 GMT+02:00 Shane <buster6se...@gmail.com>: > 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 <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 >> > > > ------------------------------------------------------------ > ------------------ > 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