Skocz do zawartości

Stringi z enterami - jak je zapisać?


nowy_user

Rekomendowane odpowiedzi

Witajcie , mam problem z zapisem zmiennej string do pliku tekstowego , który zawiera entery.  Powiedzmy że dany obiekt o_square ma zmienną text. Dodaję mu następujący kod, który ma za zadanie dodać do zmiennej text , zawartość clipboardu:

 

if(o_window_controler.active=id)//kopiowanie tekstu
if keyboard_check(vk_lcontrol)
if keyboard_check(ord("V"))
   {
   text+=clipboard_get_text();
   o_window_controler.active=noone;
   }
  

 

Wszystko jest w porządku, niezależnie od tego czy string ma entery czy nie, obiekt przyjmuje to co mam w schowku , i za pomącą innej funkcji w draw mogę sobie wyświetlić text w obiekcie o_square : Czyli mamy klasyczne pole tekstowe.

 

Schody zaczynają się, jeśli chcę zapisać zmienną text do pliku txt. A następnie, przy ponownym uruchomieniu programu ją odtworzyć za pomocą text=ini_read_string("","","");. Otóż:

 

1. Jeżeli w schowku przy wklejaniu był enter, czyli nowa linijka, to przy ponownym uruchomieniu programu , zmienna nie zostanie odczytana

2. Jeżeli w schowku nie było enteru to wszystko będzie działało jak należy i text zaczyna się z pliku txt.

 

Dziwna anomaila... czy ktoś wię skąd ten problem?

 

Pozdrawiam,

Nowy_user

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

przed serializacja do pliku zamien wszystkie "dziwne" znaki stringa na ich jakas reprezentacje, ktora zachowa je w jednej linii (np. sposob HTMLowy, czyli %<kod-ascii-znaku>) i przy deserializacji z pliku zamien je z powrotem na wlasciwe - mozesz pokazac, jak wyglada plik INI po zapisie?

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze pytanie które muszę zadać: Czemu plik INI?

Po drugie znakiem nowej linii w GM jest #

Po trzecie upewnij się jakie znaki są wsadzane do zmiennej ze schowka. Od tego jest funkcja ord()

Odnośnik do komentarza
Udostępnij na innych stronach

Jest to GM 1.4 ( z najnowszymi aktualizacjami)

 

Tak wygląda plik ini, zwróćie uwagę na sam koniec:

 

[pozycja]
y="1634.000000"
x="1453.000000"
[rozmiar]
y="1.000000"
x="1.000000"
[first]
first="0.000000"
[text]
text="linijka a
linijka b
linijka c"

 

Niestety , po odczytaniu zmiennej na początku gry  za pomocą text=ini_read_string("text","text","");    i potem po rysowaniu w drawie, wyświetla tylko linijkę a ; linijka b i linijka c nie jest wyświetlana.  Zatem problem raczej leży po stronie  odczytu a nie zapisu do pliku.


 

Cytuj

 

Po pierwsze pytanie które muszę zadać: Czemu plik INI?

 

 

 

Nie pamiętam już dlaczego użyłem w tym projekcie ini ( wracam do projektu sprzed 2 miesięcy) ale z tego co kojarzę to brakowało mi jakiejś funkcji, która była dostępna przy plikach ini.

 

Odnośnik do komentarza
Udostępnij na innych stronach

haha no to zrobiło twoje złamanie linii. No ale plik ini zapisuje klucze i wartości w jednej linii więc masz błąd składni. Możesz dokonywać serializacji jak pisał Psichix albo porzucić pliki ini.
Plus radził bym i tak jakoś zabezpieczać swoje dane.

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ę...