Skocz do zawartości

Operacje na plikach tekstowych.


Exigo

Rekomendowane odpowiedzi

Plik file.txt

[a,b,[c,d,e,f],g,h,i,[jkl]]

Odczyt pliku

GML
handle = file_bin_open( 'file.txt', 0 );

size = file_bin_size( handle );

position = 0;

level = 0;

lists[0] = ds_list_create();

buff = '';

while( position < size )

{

 

char = chr( file_bin_read_byte( handle ) );

position += 1;

 

if( char == '[' )

{

if( buff != '' )

{

ds_list_add( lists[level], buff );

buff = '';

}

 

level += 1;

lists[level] = ds_list_create();

}

else if( char == ']' )

{

if( buff != '' )

{

ds_list_add( lists[level], buff );

buff = '';

}

 

level -= 1;

if( level >= 0 )

ds_list_add( lists[level], lists[level+1] );

}

else if( level >= 0 )

{

if( char == ',' )

{

if( buff != '' )

{

ds_list_add( lists[level], buff );

buff = '';

}

}

else

buff += char;

 

}

}

file_bin_close( handle );

Przykładowe rysowanie

GML (vardump)
var s, i, v;

s = '';

for( i = 0; i < ds_list_size( argument0 ); i += 1 )

{

v = ds_list_find_value( argument0, i );

if( s != '' )

s += ',';

 

if( is_real( v ) )

s += vardump( v );

else if( is_string( v ) )

s += v;

}

return '[' + s + ']';

GML
draw_text( 0, 0, vardump( lists[0] ) );

Z zagnieżdżaniem, tak dla picu.

 

Swoją drogą nie polecam tego typu zapisu, strasznie niewygodny do odczytu. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli swoją drogą jednak zostanę przy tym skakaniu po linijkach.

Teraz zmiana topic'a, z tej samej dziedziny, ale pod innym kątem.

Czemu wartość zapisana w sposób:

0,0000

140,0000

92,0000

39,0000

Wita nas błędem "Error reading real.", w przeciwieństwie do:

0

140

92

39

Interesujące jest to że po 'zignorowaniu' potoku dane zostały wczytane prawidłowo. ; d

Odnośnik do komentarza
Udostępnij na innych stronach

GML
file_text_write_string( handle, string( number ) );
Choć to ograniczona dokładność.

 

EDIT

W sumie odczyt też ma ograniczoną dokładność do 2 cyfr po przecinku.

Ja proponuję przejść na zapis binarny. Mogę Ci wytłumaczyć jak to się robi.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...