Conectar-se
Quem está conectado
42 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 40 Visitantes

Cambalinho, ReisBlender

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

[resolvido] problema com arquivo externo

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)
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: [resolvido] problema com arquivo externo

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.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [resolvido] problema com arquivo externo

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)
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: [resolvido] problema com arquivo externo

em Qua 21 Set 2011, 16:55
Reputação da mensagem: 100% (1 votos)
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();
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [resolvido] problema com arquivo externo

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...
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum