FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Copiar ficheros con progressbar
Buenos días,
He encontrado la manera en delphi pero no tengo ni idea como se hace en c++ builder, lo que quisiera hacer yo es teniendo un componente TProgressBar quisiera copiar un fichero grande y que muestre el progreso, esto hecho en c++ builder. Como se hace? Grácias. |
#2
|
|||
|
|||
Hola, supongo que se puede hacer de varias maneras...
yo lo haría cargando el fichero en un buffer o en un objeto TMemoryStream ó en algo mas apropiado si lo hay.... entonces calcularia el tamaño y deduciría cuantos ciclos de 1024 bytes tendrian que usarse acto seguido calcularia el "step" del progressBar a medida de mis ciclos y empezaría la copia "streamIn <- buffer , buffer -> StreamOut" en ciclos de 1024 e incrementaría el STEP del progressbar en cada vuelta no sé si me he explicado y si es la forma óptima, pero de primeras se me ocurre esta manera un saludo
__________________
http://www.qdsSoftware.com |
#3
|
|||
|
|||
Más sencillo
En delphi hay otra forma y es mucho más sencillo, seguro que alguien sabe algo más i si puede ser algo de código que no se como ponerlo lo del progressbar.
Grácias. |
#4
|
||||
|
||||
#5
|
|||
|
|||
Hola,
¿puedes indicarme como se realiza en delphi? Saludos... |
#6
|
|||
|
|||
Delphi
Quisiera esto pero en c++ builder
Problem/Question/Abstract: Does anyone have an example of using CopyFileEx with a CopyProgressRoutine? I have created a function that takes the same parameters as the CopyProgressRoutine, but when I pass it using @ or Addr() I get a Variable Required error message. Answer: Let's assume you call CopyFileEx and want the callback to update a progress bar. The callback cannot be an objects method but you can use the lpData parameter of CopyFileEx to pass any kind of data to the callback, e.g. a form reference. So, if you want to serve a progress form in the callback that would look like this (untested !): type TProgressForm = class(TForm) AbortButton: TButton; ProgressBar: TProgressBar; procedure AbortButtonClick(Sender: TObject); private { Private declarations } public { Public declarations } FCancel: BOOL; end; {form has fsStayOnTop formstyle!} implementation {$R *.DFM} procedure TProgressForm.AbortButtonClick(Sender: TObject); begin FCancel := True; end; {Note: could use int64 instead of COMP, but that would make this D4 specific} function CopyCallback(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: COMP; dwStreamNumber, dwCallbackReason: DWORD; hSourceFile, hDestinationFile: THandle; progressform: TProgressForm): DWORD; stdcall; var newpos: Integer; begin Result := PROCESS_CONTINUE; if dwCallbackReason = CALLBACK_CHUNK_FINISHED then begin newpos := Round(TotalBytesTransferred / TotalFileSize * 100); with progressform.Progressbar do if newpos <> Position then Position := newpos; Application.ProcessMessages; end; end; function DoFilecopy(const source, target: string): Boolean; var progressform: TProgressForm; begin progressform := TProgressform.Create; try progressform.Show; Application.ProcessMessages; Result := CopyFileEx(PChar(source), PChar(target), @CopyCallback, Pointer(progressform), @progressform.FCancel, 0); finally progressform.Hide; progressform.free; end; end; |
#8
|
|||
|
|||
Muchísimas grácias funcionó perfectamente
Muchísimas grácias funcionó perfectamente
|
#9
|
|||
|
|||
que maravilla, yo tb tomo nota
__________________
http://www.qdsSoftware.com |
#10
|
|||
|
|||
Cita:
Código:
Page not found Sorry, we cannot find that page. Please return to the home page… |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Copiar carpeta(s) con ProgressBar | doverzhoff | Varios | 3 | 27-12-2011 23:46:30 |
copiar carpeta con sus ficheros | chinchan | C++ Builder | 1 | 22-11-2008 22:03:29 |
Copiar ficheros | piccolo2101 | Varios | 1 | 07-11-2005 11:50:41 |
Copiar Ficheros | IceJamp | Varios | 3 | 30-11-2004 13:45:17 |
Copiar nombres de ficheros a un Combo | Tomás | Varios | 2 | 12-01-2004 16:28:51 |
|