[resolvido] problema com arquivo externo

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido [resolvido] problema com arquivo externo

Mensagem por saim em Qua 21 Set 2011, 15:56

Moçada, estou com problemas tentando carregar um arquivo de texto. Já vi alguns tutoriais, mas a impressão que tenho é que estou fazendo tudo certo e o game maker está com TPM.
Então venho pedir pra vocês me mostrarem que computadores não têm TPM e onde eu errei.

O código que estou usando pode ser resumido nisso aqui:
Código:
MASK=working_directory+"\langFolder\"+language+".txt";
FILE=file_find_first(MASK, fa_readonly);

show_message(MASK);
show_message(FILE);

if !file_exists(FILE){show_message("num achou")} else {show_message("achou")};
A última mensagem na tela é sempre "num achou" (sem as aspas).

Agora, as informações que vocês precisam pra me responder:
- "language" é uma variável global que armazena uma string. Pode considerar que ela vale "português" (com o acento, sem aspas).
- a pasta "langFolder" existe, está na dentro da pasta que contém o executável do jogo, e contém o arquivo "português.txt"
- as duas primeiras mensagens mostram aquilo que eu esperaria, ou seja, "(blablabla)\langFolder\português.txt" e "português.txt", respectivamente.


Última edição por saim em Qua 21 Set 2011, 17:15, editado 1 vez(es)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [resolvido] problema com arquivo externo

Mensagem por MatheusReis em Qua 21 Set 2011, 16:31

Você está usando fa_readonly... sendo que possivelmente seu arquivo de texto não é somente leitura. Troque por fa_archive.
Pode não ser o caso... mas leia:
Se você já conhece o nome dele, não precisa fazer busca...
Para fazer o que você quer acho que seria melhor:
Código:
FILE=working_directory+"\langFolder\"+language+".txt";
//
show_message(FILE);
//
if !file_exists(FILE){show_message("num achou")} else {show_message("achou")};
Se você tem o nome exato do arquivo, não há por que 'procurar'(file_find), use o caminho de uma vez.
--EDIT--
Terminei de testar o seu código usando o 'fa_archive'. Funciona.

MatheusReis

Ranking : Nota A
Número de Mensagens : 1087
Idade : 23
Data de inscrição : 13/01/2010
Notas recebidas : B-A-A
Reputação : 30
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 0

http://www.mathaeuz.deviantart.com

Voltar ao Topo Ir em baixo

Resolvido Re: [resolvido] problema com arquivo externo

Mensagem por saim em Qua 21 Set 2011, 16:52

fa_archive "num achou", mas deixar a mask de lado, realmente, "achou", então não vou esquentar a cabeça tentando entender PORQUE na sua máquina achou e, na minha, não.

Bom, já que estamos aqui, o que significa cada uma dessas opções? Sempre usei fa_readonly, mas só porque da primeira vez que fui mexer com arquivos externos funcionou. Nunca soube o que significa cada opção.
"fa_readonly é arquivo de somente leitura". Ok, mas o que isso significa?

[Edit] Ih, ainda não resolveu não...
___________________________________________
ERROR in
action number 1
of Create Event
for object __newobject2:

File is not opened for reading.


Bom, pra resolver isso, você vai precisar de mais um pouco do meu código. Veja como ele está:

Código:
FILE=working_directory+"\langFolder\"+language+".txt";
show_message(FILE);

if !file_exists(FILE){show_message("num achou")} else {show_message("achou")};

file_text_open_read(FILE);

var i, butString, butLength, butHeight;
i=0;
play=i; i+=1
config=i; i+=1
menu=i; i+=1
nButtons=i

while(file_text_read_string(FILE)!="[first stage texts]"){
   file_text_readln(FILE)
   }
file_text_readln(FILE)

butString[play]=file_text_read_string(FILE);
show_message(butString[play]);
game_end();


Última edição por saim em Qua 21 Set 2011, 16:56, editado 1 vez(es)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [resolvido] problema com arquivo externo

Mensagem por MatheusReis em Qua 21 Set 2011, 16:55

Nas configurações de QUALQUER arquivo do computador, existe uma parte que guarda se ele é somente leitura ou não. Arquivos somente leitura não podem ser editados, apenas lidos. Quando você tenta deletar um arquivo somente leitura, geralmente o windows avisa " taltaltal.seila é somente leitura, deseja excluir?"
fa_readonly vai limitar ainda mais a busca, procurando por arquivos com a sua mask E que sejam somente leitura. fa_archive é mais geral(praticamente qualquer tipo de arquivo, deixando a limitação unicamente para a mask).
código para procurar, abrir e mostrar todos os arquivos txt da pasta local(é um pouco off, mas mostra um outro modo de usar a mask e fa_archive):

Código:
scr_gettext='filefrom=file_text_open_read(argument0);
//
res_str=file_text_read_string(filefrom)+"
";
file_text_readln(filefrom);
while(!file_text_eof(filefrom)){
res2=res_str;
res_str=res2+file_text_read_string(filefrom)+"
";
file_text_readln(filefrom)};
file_text_close(filefrom);
return res_str;';
//cria um script dentro de uma string
//
MASK=working_directory+"\";
//define o diretório
FILE=file_find_first(MASK+"*.txt", fa_archive);
//procura por arquivos de extensão .txt no diretório dado
while (FILE!=""){
//enquanto titulo do arquivo encontrado for não nulo(ou seja, TEM arquivo)
show_message(MASK+FILE);
//mostra o caminho
show_message(execute_string(scr_gettext,MASK+FILE));
//mostra o texto, usando o script feito via string.
FILE=file_find_next()};
//procura por outro arquivo para seguir o loop

EDIT

Quanto à segunda dúvida é bem simples. Você pos o código para abrir o arquivo INDIFERENTEMENTE se o programa achou o file ou não. E também, para usar os comandos de read_string e readln você usa a 'ID' do arquivo aberto, que você pega com a função file_text_open_read;
Código:
id_do_arquivo=file_text_open_read(FILE)
Código concertado:
Código:
FILE=working_directory+"\langFolder\"+language+".txt";
show_message(FILE);

if !file_exists(FILE){show_message("num achou")} else {show_message("achou");

var ID_DA_FILE;
ID_DA_FILE=file_text_open_read(FILE);

var i, butString, butLength, butHeight;
i=0;
play=i; i+=1
config=i; i+=1
menu=i; i+=1
nButtons=i

while(file_text_read_string(ID_DA_FILE)!="[first stage texts]"){
  file_text_readln(ID_DA_FILE)
  }
file_text_readln(ID_DA_FILE)

butString[play]=file_text_read_string(ID_DA_FILE);
show_message(butString[play])};
//
//
game_end();

MatheusReis

Ranking : Nota A
Número de Mensagens : 1087
Idade : 23
Data de inscrição : 13/01/2010
Notas recebidas : B-A-A
Reputação : 30
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 0

http://www.mathaeuz.deviantart.com

Voltar ao Topo Ir em baixo

Resolvido Re: [resolvido] problema com arquivo externo

Mensagem por saim em Qua 21 Set 2011, 17:14

Ah, tá ótimo! É que eu estou adaptando um código que usa um arquivo .ini pra poder colocar os .inis numa pasta à parte, por isso esqueci de salvar a id do arquivo.

Muito obrigado, Mathaeuz, tópico resolvido!

PS: Adorei a forma de criar um script. Se isso for rápido, acho que posso considerar que meu game genérico está completo...

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [resolvido] problema com arquivo externo

Mensagem por Conteúdo patrocinado Hoje à(s) 23:12


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum