game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Tutorials en Uitbreidingen (Moderator: Maarten Baert)
| | |-+  [Tut] Tekst schrijven in een bestand
Pagina's: [1]
« vorige volgende »
Print
Advertenties

Jeff van Hees
Oud-moderator


Offline Offline

Berichten: 1141


WWW
« Gepost op: 16 Maart 2005, 15:28:50 »

Tekst schrijven in een bestand
GM versie:
Game Maker 5.2+, Game Maker 6.x
Niveau: gevorderden
Registratie vereist: nee

In deze example leer je functies om tekst in een bestand te schrijven. Wel heb je wat GML programmeer kennis nodig.

Je leert:

» Gebruiken van Open en Opslaan vensters
» Tekst schrijven in een bestand
» Tekst lezen uit een bestand

Gebruiken van Open en Opslaan vensters
In dit gedeelte van deze tutorial leer je omgaan met vensters waarin
je een bestand kunt opgeven en kunt openen/opslaan.

We gebruiken de code:
Open venster: get_open_filename,fname)
Opslaan venster: get_save_filename,fname)

We gebruiken de variabele "filename" voor het bestand waar het in moet worden opgeslagen.

Code:
filename = get_save_filename("Txt Bestanden|*.txt","")

In het eerste argument van de code geven het type bestand weer.
Dus: "Txt Bestanden|*.txt"
Het teken | scheid het de naam van de extentie en de extentie zelf.
Als je meerdere bestanden wilt weergeven kan je ; gebruiken.
Dus bijvoorbeeld: "Txt Bestanden|*.txt;*.rtf"

Bij tweede argument is nu niets ingevult maar
daar kan je bijv. "C:\Program Files\" invullen.
Dan word C:\Program Files de map waarin je begint.
get_save_filename werkt ongeveer het zelfde.

(-1 is is de default, dus als er op annuleren wordt geklikt)

Als voorbeeld om een spel op te slaan:
Code:
filename = get_save_filename("Saved Games|*.sav","")
if filename = -1 then exit
game_save(filename+".sav")


Als voorbeeld om een spel te openen:
Code:
filename = get_open_filename("Saved Games|*.sav","")
if filename = -1 then exit
game_load(filename)


Nu weet je genoeg over he gebruiken van deze vensters.
Deze kunnen we ook gebruiken om bestanden te selecteren waarin
we tekst willen schrijven en uitlezen.

Tekst schrijven in een bestand
Om een bestand te selecteren gebruiken we de code:
thefile = file_text_open_write("C:\myfile.txt")
Als het bestand niet bestaat word deze vanzelf aangemaakt.
Met thefile = file_text_write_string(file,str)schrijven we een regel tekst.
En met file_text_writeln(file) gaan we naar de volgende regel.
Aan het eind van het script gebruiken we file_text_close(thefile)

Stel we willen de zin "Dit is de eerste regel" naar een "leeg"
bestandje schrijven die nog niet bestaat:

Code:
thefile = file_text_open_write("C:\myfile.txt")
file_text_write_string(thefile,"De eerste regel")
file_text_writeln(thefile)
file_text_write_string(thefile,"De tweede regel")
file_text_close(thefile)

Nu word er een bestandje aangemaakt (C:\myfile.txt) waarin 2 zinnen in zijn geschreven.

Tekst lezen uit een bestand
Dit werkt ongeveer het zelfde als het schrijven.
Alleen "write" word vervangen door "read" in de codes.

Om een bestand te selecteren gebruiken we de code:
thefile = file_text_open_read("C:\myfile.txt")
Als het bestand niet bestaat word deze vanzelf aangemaakt.
Met thefile = file_text_read_string(file,str)schrijven we een regel tekst.
En met file_text_readln(file) gaan we naar de volgende regel.
Aan het eind van het script gebruiken we file_text_close(thefile)

Je hebt bijvoorbeeld het script van het schrijven gebruikt en je wilt de eerste 2 zinnen uitlezen:

Code:
thefile = file_text_open_read("C:\myfile.txt")
string1 = file_text_read_string(thefile)
file_text_readln(thefile)
string2 = file_text_read_string(thefile)
file_text_close(thefile)

show_message("Resultaat:#Zin 1: "+string1+"#Zin 2: "+string2)

Nu worden de 2 zinnen weergegeven in de message.

Gebruiken van Open en Opslaan vensters in combinatie
Nu gaan we het combineren.

Code:
filename = get_open_filename("Txt Bestanden|*.txt","")
thefile = file_text_open_read(filename)
string1 = file_text_read_string(thefile)
file_text_readln(thefile)
string2 = file_text_read_string(thefile)
file_text_close(thefile)


Dit kan natuurlijk ook met "write"
-----------------------------------------

Einde
Deze tutorial is geschreven door Jeff van Hees voor de Nederlandse Game-Maker Community


Naar boven Gelogd

Timothy
Gebruiker

Offline Offline

Berichten: 229


WWW
« Antwoord #1 Gepost op: 9 Maart 2007, 20:58:46 »

deze tut ben ik al kei lang naar op zoek, maar kan je er ook een example van maken met gm 5.2?


Mijn eigen Overige Discussies voor de oplossongen van niet mogen gevraagde vragen op dit forum.
Bezoek het en meld je aub met de delfde gebruikers naam aan als hier.

http://overigedis.www2.prexon.nl

O NOG 1 DING!: ER ZIJN NOG MODS GEZOCHT DUS MELD JE AAN EN PM DE ADMIN.
Naar boven Gelogd

freerk05
Gebruiker


Offline Offline

Berichten: 1065


WWW
« Antwoord #2 Gepost op: 9 Maart 2007, 21:05:15 »

Citaat van: "Timothy"
deze tut ben ik al kei lang naar op zoek, maar kan je er ook een example van maken met gm 5.2?
Hij is 5.2 compatible Knipoog.


Je kunt mijn vinden @gmot Knipoog
Naar boven Gelogd

digitpix
Gebruiker

Offline Offline

Berichten: 71


« Antwoord #3 Gepost op: 24 Februari 2009, 14:26:55 »

ik krijg steeds een error message

voor save:
ERROR in action number 1
of mouse event for left pressed
for object gameSbutton
error in code in line 2:
if filename = -1 then exit
at position 16: cannot compare arguments

en voor load:
ERROR in action number 1
of mouse event for left pressed
for object gameLbutton
error in code in line 2:
if filename = -1 then exit
at position 16: cannot compare arguments

wat doe ik verkeerd?


bedenken is één ding,
maken is er nog een,
en spelen is de laatste.
Naar boven Gelogd

Divendo
Gebruiker


Offline Offline

Berichten: 57


« Antwoord #4 Gepost op: 24 Februari 2009, 15:30:58 »

Kan kloppen, die functie geeft namelijk geen -1 terug met annuleren maar een lege string.
Dus het wordt:
GML:
filename = get_save_filename("Saved Games|*.sav","");
if(filename=="")
  exit;
filename=filename_change_ext(filename, ".sav");
game_save(filename);
Ik heb een voorkeur voor filename_change_ex(name, newExt);
omdat als je alleen +".sav" doet en je wilde hem over het bestand "file.sav" opslaan krijg je een nieuw bestand: "file.sav.sav" en is file.sav niet vervangen!

En ik kan wel een example maken maar die is dan .gmk...

Naar boven Gelogd

michielbrink
Gebruiker


Offline Offline

Berichten: 244


WWW
« Antwoord #5 Gepost op: 16 Maart 2009, 06:56:03 »

hij zecht dit:
Code:
Error opening file for writing.

« Laatste verandering: 16 Maart 2009, 07:00:38 door michielbrink »

ik ben een gm8pro gebruiker
I am a in the GM Quiz!

vragen mogen altijd via ping! mijn ping! id is:  michielbrink (ping! is een gratis app voor de ipod touch en de iphone om te "gms'en"
Naar boven Gelogd

tidob1
Gebruiker


Offline Offline

Berichten: 2610


« Antwoord #6 Gepost op: 16 Maart 2009, 15:31:12 »

Dan heb je de code niet goed overgenomen.

Naar boven Gelogd

michielbrink
Gebruiker


Offline Offline

Berichten: 244


WWW
« Antwoord #7 Gepost op: 16 Maart 2009, 17:11:22 »

Dan heb je de code niet goed overgenomen.
ik heb dit gedaan in create:
GML:
thefile = file_text_open_write("C:\myfile.txt")
file_text_write_string(thefile,"De eerste regel")
file_text_writeln(thefile)
file_text_write_string(thefile,"De tweede regel")
file_text_close(thefile)


ik ben een gm8pro gebruiker
I am a in the GM Quiz!

vragen mogen altijd via ping! mijn ping! id is:  michielbrink (ping! is een gratis app voor de ipod touch en de iphone om te "gms'en"
Naar boven Gelogd

Divendo
Gebruiker


Offline Offline

Berichten: 57


« Antwoord #8 Gepost op: 16 Maart 2009, 17:39:26 »

Miss staat windows niet toe direct op C:\ te schrijven...
Probeer eens een andere map.

Naar boven Gelogd

michielbrink
Gebruiker


Offline Offline

Berichten: 244


WWW
« Antwoord #9 Gepost op: 17 Maart 2009, 07:01:57 »

Miss staat windows niet toe direct op C:\ te schrijven...
Probeer eens een andere map.
bedankt hij doet het


ik ben een gm8pro gebruiker
I am a in the GM Quiz!

vragen mogen altijd via ping! mijn ping! id is:  michielbrink (ping! is een gratis app voor de ipod touch en de iphone om te "gms'en"
Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2019 Nederlandse Game Maker Community