Problema com TOpenDialog e fopen()
05/03/2009
0
Estou usando a versão grátis Turbo Explorer
Toda vez que eu chamo o Execute() de um objeto TOpenDialog, as funções de arquivo param de funcionar. fopen() não retorna falha, mas não cria arquivo, e as outras funções (fwrite, fprintf, fputc) não fazem nada
OBSERVAÇÃO: Isso só acontece quando eu clico no botão ´Abrir´ de um diálogo TOpenDialog. Se eu clicar no botão Cancelar ou fechar o diálog esse bug não acontece. Minha opinião é que o botão ´Abrir´ do TOpenDialog está fazendo mais doque apenas settar a AnsiString FileName para o nome do arquivo selecionado
Toda vez que eu chamo o Execute() de um objeto TOpenDialog, as funções de arquivo param de funcionar. fopen() não retorna falha, mas não cria arquivo, e as outras funções (fwrite, fprintf, fputc) não fazem nada
OBSERVAÇÃO: Isso só acontece quando eu clico no botão ´Abrir´ de um diálogo TOpenDialog. Se eu clicar no botão Cancelar ou fechar o diálog esse bug não acontece. Minha opinião é que o botão ´Abrir´ do TOpenDialog está fazendo mais doque apenas settar a AnsiString FileName para o nome do arquivo selecionado
G-flip
Curtir tópico
+ 0
Responder
Posts
05/03/2009
G-flip
Por exemplo
Quando o diálogo de abrir arquivo aparecer, se eu clicar no botão ´Cancelar´ ou fechar o diálogo, a parte em negrito funcionara. Mas se eu selecionar um arquivo e apertar o botão ´Abrir´ a parte em negrito não funcionara
[/code]
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { OpenDialog1->Execute(); [b]FILE *fp; fp=fopen("lolhhhhhhh.txt", "wb+"); fprintf(fp, "testee"); fclose(fp);[/b] LabeledEdit2->SetTextBuf(OpenDialog1->FileName.c_str()); }
Quando o diálogo de abrir arquivo aparecer, se eu clicar no botão ´Cancelar´ ou fechar o diálogo, a parte em negrito funcionara. Mas se eu selecionar um arquivo e apertar o botão ´Abrir´ a parte em negrito não funcionara
[/code]
Responder
06/03/2009
Rodc
O OpenDialog muda o caminho padrão do sistema para o caminho do arquivo que foi aberto. Quando você inicia o sistema o caminho padrão é o do executável.
Por isso, sempre que for abrir um arquivo, deve passar o caminho completo do aruqivo. Exemplo:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
OpenDialog1->Execute();
[b:bb9c2cdd0a]FILE *fp;
fp=fopen((ParamStr(0) + ´lolhhhhhhh.txt´).c_str(), ´wb+´);
fprintf(fp, ´testee´);
fclose(fp);[/b:bb9c2cdd0a]
LabeledEdit2->SetTextBuf(OpenDialog1->FileName.c_str());
}
Por isso, sempre que for abrir um arquivo, deve passar o caminho completo do aruqivo. Exemplo:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
OpenDialog1->Execute();
[b:bb9c2cdd0a]FILE *fp;
fp=fopen((ParamStr(0) + ´lolhhhhhhh.txt´).c_str(), ´wb+´);
fprintf(fp, ´testee´);
fclose(fp);[/b:bb9c2cdd0a]
LabeledEdit2->SetTextBuf(OpenDialog1->FileName.c_str());
}
Responder
Clique aqui para fazer login e interagir na Comunidade :)