Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema con funciones delphi (https://www.clubdelphi.com/foros/showthread.php?t=41918)

xelip 29-03-2007 03:14:11

problema con funciones delphi
 
sigo teniendo problemas con las funciones copyfile y movefile, ya revise lo que devuelve la funcion getlasterror, pero el llamado al api esta OK, este es el codigo que tengo:

var ExistFile,NewFile: String;
if opendialog1.execute then ExistFile := opendialog1.filename;
if savadialog1.execute then NewFile := savadialog1.filename;
copyfile(PChar(ExisteFile),PChar(NewFile),False);

cuando ejecuta el primer if todo sigue normal, pero cuando ejecuta el savedialog, entonces se cierra la aplicacion, antes de poder seleccionar el archivo donde voy a guardar.

agradeceria mucho que alguien me ayudara....
gracias

Robert01 29-03-2007 04:00:11

Si ponés este código en el evento click de un botón y lo ejecutás anda perfectamente, debe haber un leve error en tu código

Código Delphi [-]
var
  fileSource, fileDest: string;
begin
  if opendialog1.Execute then fileSource := opendialog1.FileName;

  filedest:=savedialog1.FileName;

  if savedialog1.Execute then CopyFile(PChar(filesource), PChar(filedest), False);
end;

Saludos

egostar 29-03-2007 04:06:19

Yo creo que es mejor así, tu idea es muy buena Roberto01

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  fileSource, fileDest: string;
begin
  if opendialog1.Execute then begin
     fileSource := opendialog1.FileName;
     if savedialog1.Execute then begin
        filedest:=savedialog1.FileName;
        CopyFile(PChar(filesource),PChar(filedest), False);
     end;
  end;
end;

Saludos

xelip 29-03-2007 04:17:54

gracias
 
el problema es que tengo en el codigo de un boton:
if opendialog1.execute then existfile := opendialog1.filename;
y en el otro boton:
if savedialog1.execute then newfile := savedialog1.filename;
copyfile(PChar(existfile),PChar(newfile),False);

el problema es cuando se ejecuta savedialog1.excute, esto provoca que se abra la ventana de save dialog, pero despues de un instante de la ventana abierta, se cierra la apliacion

egostar 29-03-2007 04:24:08

Cita:

Empezado por xelip
el problema es cuando se ejecuta savedialog1.excute, esto provoca que se abra la ventana de save dialog, pero despues de un instante de la ventana abierta, se cierra la apliacion

Pues no falla, asi esta mi código y no se cierra la aplicación.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    BitBtn2: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  fileSource, fileDest: string;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if opendialog1.Execute then begin
     fileSource := opendialog1.FileName;
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  if savedialog1.Execute then begin
     filedest:=savedialog1.FileName;
     CopyFile(PChar(filesource),PChar(filedest), False);
  end;
end;

end.

Salud OS.

xelip 29-03-2007 04:32:03

sige el problema
 
mi codigo es asi mismo, pero cuando se ejecuta el save dialog da runtime error 217, despues se cierra la apliacion

egostar 29-03-2007 04:44:21

Pues que raro, porque ya ejecuté tu código y no me da error, porque no pones tu código completo aquí para ver que está pasando.

Te aconsejo que uses las etiquetas vB para poder entender bien el código delphi.

Salud OS.

xelip 29-03-2007 04:55:48

gracias por ayudarme
 
procedure TForm1.Copiar1Click(Sender: TObject);
begin
if OpenDialog1.Execute then MyCopy.ExistFile := OpenDialog1.FileName;
end;

procedure TForm1.Pegar1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
MyCopy.NewFile := SaveDialog1.FileName;
MyCopy.Copy;
end;
Memo1.Lines.Add(MyCopy.ExistFile);
Memo2.Lines.Add(MyCopy.NewFile);
end;


MyCopy es una clase donde implemento copyfile, eso esta ok el problema es en el evento pegar

roman 29-03-2007 05:05:20

Este error, ¿te da siempre que oprimes el botón pegar, o sólo cuando primero oprimes copiar y luego pegar?

// Saludos

xelip 29-03-2007 05:12:53

este error solo es cuando oprimo copiar antes... por que lo preguntas???

roman 29-03-2007 05:21:51

Pues entonces quizá por ahí esté el problema ¿no crees? Algo ocurre en el copiado que afecta la operación posterior. El error 217 es algo bastante raro:

Cita:

217 ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY
The image file %1 is signed, unable to modify.
O sea, como que nada que ver. Me da la sospecha de que hay algo en tu clase MyCopy que está dejando inestable a la aplicación.

// Saludos


La franja horaria es GMT +2. Ahora son las 07:39:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi