I've uploaded the class with a short command line demo to the software farm.


On 2017-07-20 12:22 PM, Gianluigi wrote:
Hi Tony,
Sorry if i answered  instead of you, but I did not understand who the
question was for :-(

Regards
Gianluigi

2017-07-20 15:35 GMT+02:00 Tony Morehen <tmore...@ajmconsulting.ca>:

It is my code.  It started off life as part of a cd ripper program I wrote
in 2010 in vb6.  It was inspired by code provided by Steve McMahon (
st...@vbaccelerator.com) under an Apache style licence.  The code has
since been heavily rewritten, translated to vb.net and finally translated
to gambas.


On 2017-07-20 07:16 AM, Shane wrote:

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 <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#m
sg41793

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


------------------------------------------------------------------------------

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

Reply via email to