View Single Post
Old 01-14-2018, 11:04 AM   #83
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

I'm having difficulties with storing strings for the third time and I keep forgeting, how my previous solutions worked out.
So, here we have a piece of code:
Code:
    oscmatch("/track/%d/name", trackNumber)            ? (
        oscparm(0,'s',oscTrackName[trackNumber]);
        oscTrackName8[trackNumber] = formatString(oscTrackName[trackNumber],8,1);
        printf("f  %i - %s\n", trackNumber, oscTrackName[trackNumber]);
        printf("r  %i - %s\n", trackNumber, oscTrackName8[trackNumber]);
        printf("f4 %i - %s\n", trackNumber, oscTrackName[4]);
        printf("r4 %i - %s\n", trackNumber, oscTrackName8[4]);
        printf("---\n");
        );
Let's say that formatString function just reduced incoming strings to the length of 8 characters.

And this is the log output:
Code:
f  1 - asdas121415
r  1 - asdas121
f4 1 - Track 4
r4 1 - asdas121
---
f  2 - Track 2
r  2 - Track 2 
f4 2 - Track 4
r4 2 - Track 2 
---
f  3 - Track 3
r  3 - Track 3 
f4 3 - Track 4
r4 3 - Track 3 
---
f  4 - Track 4
r  4 - Track 4 
f4 4 - Track 4
r4 4 - Track 4 
---
f  5 - Track 5
r  5 - Track 5 
f4 5 - Track 4
r4 5 - Track 5 
---
f  6 - Track 6
r  6 - Track 6 
f4 6 - Track 4
r4 6 - Track 6 
---
f  7 - Track 7
r  7 - Track 7 
f4 7 - Track 4
r4 7 - Track 7 
---
f  8 - Track 8
r  8 - Track 8 
f4 8 - Track 4
r4 8 - Track 8
As it can be seen here, full strings, i.e oscTrackName[trackNumber] (f) are stored properly, based of trackNumber = 4 (f4) behavior.
Reduced variables, i.e. oscTrackName8[trackNumber] (r) are all pointing to the same string, as trackNumber = 4 (r4) is showing us.

Here's how those arrays are declared in @init section. Both are declared exactly the same way:
Code:
oscTrackName        = 49*16384;
oscTrackName8        = 61*16384;
mem_set_values(oscTrackName+1,        #,#,#,#,#,#,#,#);
mem_set_values(oscTrackName8+1,        #,#,#,#,#,#,#,#);
So, when displaying track names with oscTrackName we get this:

and with oscTrackNames8 we get this:


And I don't understand, why.
fundorin is offline   Reply With Quote