Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 17-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Veo que no levanto mucho interés este tema. Quizá sea por necesitar de otro programa para leer sector a sector el disco que se quiere explorar en busca de imágenes jpg. También es verdad que daba como alternativa un programa hecho en C y que también publique por aquí hace tiempo.

El caso es que, como estamos en el ClubDelphi, quizá sea mas interesante si el código para extraer la información del disco esta escrito en delphi y no en C. Pues no hay problema, aquí va un poco de código:

(Es una aplicación de consola)
Código Delphi [-]
program dump;

{$APPTYPE CONSOLE}

uses Windows, SysUtils, Classes;

const
  BufferSize = 32*1024*1024;  // 32 Mb

procedure WriteMsg(Msg: string);
var
  StdError: THandle;
begin
  StdError:= GetStdHandle(STD_ERROR_HANDLE);
  if (StdError <> STD_ERROR_HANDLE) and (StdError <> 0) then
  begin
    FileWrite(StdError,PChar(Msg + #13#10)^,Length(Msg) + 2);
  end;
end;

procedure WriteError(Msg: String);
var
  ErrorCode: Cardinal;
begin
  ErrorCode:= GetLastError;
  if ErrorCode <> 0 then
    Msg:= Msg + ': ' + SysErrorMessage(GetLastError);
  WriteMsg(Msg);
end;

procedure Loop(Input,Output: THandle);
var
  Buffer: Pointer;
  BytesRead: Cardinal;
  BytesWritten: Cardinal;
begin
  GetMem(Buffer,BufferSize);
  try
    while TRUE do
    begin
      if not ReadFile(Input,Buffer^,BufferSize,BytesRead,nil) then
       if GetLastError <> ERROR_BROKEN_PIPE then
       begin
         WriteError('ReadFile()');
         break;
       end;
      if BytesRead = 0 then
        break;
      if not WriteFile(Output,Buffer^,BytesRead,BytesWritten,nil) then
      begin
        WriteError('WriteFile()');
        break;
      end;
    end;
  finally
    FreeMem(Buffer);
  end;
end;

var
  i: integer;
  Input, Output: THandle;
  InputStr, OutputStr: String;
begin
  with TStringList.Create do
  try
    for i:= 1 to ParamCount do
      Add(LowerCase(ParamStr(i)));
    InputStr:= Values['if'];
    OutputStr:= Values['of']; 
    if (OutputStr <> '') then
      Output:= CreateFile(PChar(OutputStr),GENERIC_WRITE,FILE_SHARE_READ,nil,
        OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0)
    else
      Output:= GetStdHandle(STD_OUTPUT_HANDLE);
    if (Output <> STD_ERROR_HANDLE) and (Output <> 0) then
    begin
        if (InputStr <> '') then
          Input:= CreateFile(PChar(InputStr),GENERIC_READ,
            FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0)
        else
          Input:= GetStdHandle(STD_INPUT_HANDLE);
        if (Output <> STD_ERROR_HANDLE) and (Output <> 0) then
        begin
          Loop(Input,Output);
        end else
          WriteError('');
    end else
      WriteError('');
  finally
    Free;
  end;
end.

Para usarlo, por ejemplo para crear una imagen del disco F :
Código:
dump if=\\.\F: > imagen.bin
Para crear una imagen del primer disco duro:
Código:
dump if=\\.\PhisicalDrive0 > imagen.bin
Para restaurar una imagen en un disco:
Código:
dump if=imagen.bin of=\\.\F:
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Incluir imagenes JPEG en paradox 7 rsantosr Gráficos 3 06-12-2005 01:12:25
cabecera de imagenes jpeg samantha jones Gráficos 1 19-08-2004 03:35:29
Problemas alguardar imagenes jpeg y gif en un campo blob Flycket Firebird e Interbase 3 20-02-2004 09:29:02
TMysql imagenes jpeg xobius Conexión con bases de datos 0 11-02-2004 16:21:16
Visualizar Imagenes Jpeg Legolas Gráficos 1 17-11-2003 21:14:23


La franja horaria es GMT +2. Ahora son las 23:35:34.


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