Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2006
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 24
pcicom Va por buen camino
Super INteresante....

Esta super tu codigo y lo que el hace....... sabes hace tiempo navegando por internet encrontre un programa que te servia para recuperar archivos borrados en el sistema... el codigo estaba en DELPHI, en ese entonces lo grabe en mi disco, pero con el paso del tiempo cambie de disco porque me fallo y este programa ya no lo he podido encontrar...

en fin...


bueno leyendo algo de lo que haces, me gustaria saber si conoces un metodo o la forma en como saber en que sector del disco esta grabado un archivo que yo eliga... posiscion, pista, sector y esas cosas...


desde ya gracias......
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #2  
Antiguo 13-08-2006
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
Cita:
Empezado por pcicom
bueno leyendo algo de lo que haces, me gustaria saber si conoces un metodo o la forma en como saber en que sector del disco esta grabado un archivo que yo eliga... posiscion, pista, sector y esas cosas...
Bueno, no exactamente el sector pero si se una forma de averiguar en que clusters esta localizado el archivo. Aunque no entiendo muy bien para que necesitas esa información, si es para conocer lo fragmentado que esta un fichero esto es lo que buscas, si lo que quieres es hacer algún tipo de protección anticopia esto también te puede servir.

Código Delphi [-]
program Cluster;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

const
  FSCTL_GET_RETRIEVAL_POINTERS = $90073;

type
  Extent = record
    Vcn: int64;
    Lcn: int64;
  end;

  RETRIEVAL_POINTERS_BUFFER = record
    ExtentCount: Cardinal;
    StartingVcn: int64;
    Extents: array[0..0] of Extent;
  end;
  PRETRIEVAL_POINTERS_BUFFER = ^RETRIEVAL_POINTERS_BUFFER ;

procedure OutString(Str: string);
begin
  Writeln(Str);
end;    

procedure DumpFile(Filename: string);
var
  hFile: THandle;
  Buffer: array[1..512+2] of int64;
  StartVcn: Int64;
  ClusterList: PRETRIEVAL_POINTERS_BUFFER;
  Returned: Cardinal;
  Success: BOOL;
  LastError: Cardinal;
  i: integer;
begin
  hFile:= CreateFile(PChar(Filename),GENERIC_READ, FILE_SHARE_READ or
    FILE_SHARE_WRITE ,nil, OPEN_EXISTING,FILE_FLAG_NO_BUFFERING,0);
  if hFile <> INVALID_HANDLE_VALUE then
  begin
    StartVcn:= 0;
    ClusterList:= @Buffer;
    repeat
      Success:= DeviceIOControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, @StartVcn,
        Sizeof(StartVcn),@Buffer, Sizeof(Buffer), Returned, nil);
      if Success then
        LastError:= 0
      else
        LastError:= GetLastError;
      if Success or (LastError = ERROR_MORE_DATA) then
      begin
        StartVcn:= ClusterList^.StartingVcn;
        for i:= 0 to ClusterList^.ExtentCount - 1 do
        begin
          OutString(Format('VCN: %d LCN: %d LEN: %d',[StartVcn, ClusterList^.Extents[i].Lcn,
            ClusterList^.Extents[i].Vcn - StartVcn]));
          StartVcn := ClusterList^.Extents[i].Vcn;
        end;
      end else OutString(SysErrorMessage(LastError));
    until LastError <> ERROR_MORE_DATA;
    CloseHandle(hFile);
  end else OutString(SysErrorMessage(GetLastError));
end;  

begin
  DumpFile(ParamStr(0));
  readln;
end.

El programa anterior muestra una lista con los cluster que pertenecen al archivo. VCN -> Virtual cluster, LCN -> Logic Cluster (el numero de cluster real, posiblemente el que te interesa), LEN -> Es el numero de clusters contiguos en ese trozo. Lo normal, sobre todo si el archivo es pequeño, es que todos los cluster del archivo sean contiguos, así que la lista solo tendrá una entrada. Busca un archivo muy fragmentado para probar la función y veras como te devuelve la posición de cada trozo.

Aquí te dejo el programa compilado y con el código fuente, listo para usar:
Archivos Adjuntos
Tipo de Archivo: zip Cluster.zip (25,8 KB, 44 visitas)
Responder Con Cita
  #3  
Antiguo 13-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino

¿habrá algo que este chico no pueda solucionar?
Él dice que sí... pero yo no me lo creo.


Vaya derroche de... de... yo que sé... no me salen las palabras....

Emilio: Muy buen punto ese de limitar a 10 el número de emoticones en cada mensaje jajaja, pero la verdad, a mí hoy se me han hecho pequeños .
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 13-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Lepe
¿habrá algo que este chico no pueda solucionar?

Él dice que sí... pero yo no me lo creo.
Bueno. Gracias Lepe. Suelo decir que sí, ya sabes, por modestia y eso...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Codigo fuente programa P2P Niko Varios 2 11-07-2007 09:27:40
Código fuente chinchan C++ Builder 3 01-08-2006 04:59:25
codigo fuente o programa en delphi Ravent OOP 5 27-05-2006 16:04:33
TPV.- Codigo Fuente Rabata Varios 4 15-10-2005 13:48:51
Codigo fuente programa de instalación wallesis OOP 2 08-10-2004 10:11:07


La franja horaria es GMT +2. Ahora son las 12:51:17.


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