store more than 2000 characters @ external file


    Jul 10 2008 | 10:36 pm
    hello all,
    i am trying to save a string with more than 2000 character using javascript. inside javascript i can address and manipulate strings with a lenght of more than 90000 characters. but it is impossible to store the large string.
    - the messagewindow outputs only 2000 characters - the file i save contains 90000 characters, but the last 98000 are empty. - max crashes, when i generate a string with more than 100000 characters
    i use max 4.6.3
    any help out there ?
    here is my example script (just send a bang):
    ____________________________________________________
    inlets = 1; outlets = 1; autowatch = 1;
    function bang(){ this.thePatcherPath = this.patcher.filepath;
    theOutString = ""; for ( var i=0; i theOutString = theOutString + "I"; }
    for ( var i=0; i theOutString = theOutString + "B"; }
    thePath = this.thePatcherPath + "/" + "test.txt" this.writeFile( thePath, theOutString ); }
    function writeFile( whichFilePath, whichString ){ post( "n" + " last : " + whichString.charAt( 90000 ) + "n" ); post( "n" + " string : " + whichString + "n"); post( "n" + " length : " + whichString.length + "n"); f = new File( whichFilePath, "readwrite", []); f.open( whichFilePath ); f.writestring( whichString ); f.eof = whichString.length; f.close() }

    • Jul 11 2008 | 8:43 am
      Hi,
      I remember encountering the length limit for writestring (and perhaps for readline as-well, can't remember any more), and my workaround was to write the string byte-by-byte - using writebytes/writechar.
      don't know about maximum string length, but if you need humongous amounts of bytes, perhaps you could use jit.matrix?
      hth, nesa
      On Jul 11, 2008, at 12:36 AM, videomasta wrote: > > - the file i save contains 90000 characters, but the last 98000 are > empty. > - max crashes, when i generate a string with more than 100000 > characters
    • Jul 11 2008 | 9:21 am
      found a solution ! just split the string into slices before saving .... its a bit laborious ...
      here is the code:
      function writeFile( whichFilePath, whichString ){ f = new File( whichFilePath, "readwrite", []); f.open( whichFilePath );
      theMaxChars = 1000; theDivisions = whichString.length / theMaxChars;
      for ( var i=0; i f.position = ( i ) * theMaxChars;; theString = whichString.slice(i*theMaxChars, (i+1)*theMaxChars); f.writestring( theString ); } f.eof = whichString.length; f.close() }