Ir ao conteúdo

external exception c000008


wesleysave

Posts recomendados

Postado

Olá!

Estou tentando executar um codigo simples, para criar um arquivo, e depois executá-lo

filecreate('c:\arquivo.txt');

edit:=edit1.Text;

edit2:=form1.edit1.Text;

AssignFile(arquivo,'c:\arquivo.txt');

closehandle(handle);

append(arquivo);

write(arquivo,' teste ',edit2,' ',edit);

closefile(arquivo);

renamefile('c:/arquivo.txt','c:\arquivo.bat');

WinExec('C:\arquivo.bat', SW_HIDE);

deletefile('c:\arquivo.bat');

edit1.text:='';

e tenho o erro listado no titulo.... coloquei aquele "closehandle", porque antes estava dando erro i/o 32 antes do "append", e vi em outro local, que precisava fechar o arquivo antes de prosseguir pra um "write"... agora estou confuso... alguem poderia me dar uma luz?

  • Membro VIP
Postado

Olá!

Olha quem ta aqui :P XD

Então cara.. não é muito minha especialidade essa parte então fiz meu proprio código (ou talvez nem tanto) para fazer a mesma coisa que você está tentando, ok?

Então eu fiz assim, declarei na seção public do form1:

function CriarArquivo(NomeArq,Dados: String):Boolean;

e sua declaração posterior:

function TForm1.CriarArquivo(NomeArq,Dados: String):Boolean;

var

ArqLogico:TextFile;

begin

try

AssignFile(ArqLogico,NomeArq);

if not FileExists(NomeArq) then

ReWrite(ArqLogico)

else

Append(ArqLogico);

Result:=True;

except

Result:=False;

end;

if Result then

begin

WriteLn(ArqLogico,Dados);

CloseFile(ArqLogico);

RenameFile('C:\Teste.txt','C:\Teste.bat');

WinExec('C:\Teste.bat',SW_HIDE);

end;

end;

E adicionei um botão no form, e no OnClick dele o seguinte:

if CriarArquivo('C:\Teste.txt','md moguinho') then

ShowMessage('Arquivo criado com sucesso!')

else

ShowMessage('Ocorreu um erro ao tentar criar o arquivo!');

(Código completo no final do post)

Testei algumas vezes, funcionou legal.

Mas não está funcionando como eu gostaria.. mas atende o que você pediu, talvez você consiga fazer as modificações que necessitar..

Infelizmente para deixar o programa como quero preciso pesquisar mais, voltarei em breve..

Enquanto isso diga se isso ja basta :)

Abraços!

Código completo

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

function CriarArquivo(NomeArq,Dados: String):Boolean;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.CriarArquivo(NomeArq,Dados: String):Boolean;

var

ArqLogico:TextFile;

begin

try

AssignFile(ArqLogico,NomeArq);

if not FileExists(NomeArq) then

ReWrite(ArqLogico)

else

Append(ArqLogico);

Result:=True;

except

Result:=False;

end;

if Result then

begin

WriteLn(ArqLogico,Dados);

CloseFile(ArqLogico);

RenameFile('C:\Teste.txt','C:\Teste.bat');

WinExec('C:\Teste.bat',SW_HIDE);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if CriarArquivo('C:\Teste.txt','lalala teste lalala') then

ShowMessage('Arquivo criado com sucesso!')

else

ShowMessage('Ocorreu um erro ao tentar criar o arquivo!');

end;

end.

PS: Lembre-se dos problemas da barra invertida que está tendo no forum..

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...