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

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 12-10-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Aunque se adelantaron a preguntarlo, debo acotar algo que me inquieta en el sentido practico); tienes un CD (grabado o no) y digamos que podemos detectar el sector da­ñado y resulta ser el #666 .

Bien! tenemos el sector 666 dañado y el resto perfecto; de paso en el software mostramos un par de circulitos en representacion del CD y utilizando algo de trigonometria y tomando un angulo X marcamos con un "punto" el lugar donde se encuentra el "alfilerazo", el usuaro lo ve y todos felices

Ahora mi duda; cómo podemos saber comparando visualmente dónde está dicho sector dañado? como sabemos (girando X grados el CD) dónde esta el "punto" que vemos en la pantalla???

Paisano CrazySoft: aqui va un codigo que puedes(n) utilizar para dicho caso;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 
var
 hDevice, Dummy, Sectors, Sector: Cardinal;
 Buffer: array [0..$FFFF] of Byte;
 Geometry: record
  Cylinders: Int64;
  MediaType,
  TracksPerCylinder,
  SectorsPerTrack,
  BytesPerSector: Cardinal;
 end;
 
begin
 SetErrorMode(SEM_FAILCRITICALERRORS);
 hDevice := CreateFile('\\.\g:', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
 if hDevice <> INVALID_HANDLE_VALUE then
  begin
   DeviceIoControl(hDevice, $70000{IOCTL_DISK_GET_DRIVE_GEOMETRY}, nil, 0, @Geometry, SizeOf(Geometry), Dummy, nil);
   Sectors := Geometry.SectorsPerTrack * Geometry.TracksPerCylinder * Geometry.Cylinders;
   for Sector := 0 to Sectors - 1 do
    begin
     Label1.Caption := 'Leyendo el sector #' + IntToStr(Sector) + '...';
     Application.ProcessMessages; // Use a thread !!!
     if not ReadFile(hDevice, Buffer, Geometry.BytesPerSector, Dummy, nil) then
      ShowMessage('El sector #' + IntToStr(Sector) + ' esta dañado !');
    end;
   CloseHandle(hDevice);
  end;
end;

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
 


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
Manipular Video Carlos Arevalo Varios 4 21-10-2006 16:00:43
manipular botones fartycl Varios 3 21-06-2006 22:03:31
Manipular Paradox Coco_jac Conexión con bases de datos 5 09-11-2005 16:15:00
DBLookupComboBox manipular Sayuri Conexión con bases de datos 3 26-07-2005 09:17:02
Manipular un Reporte noir Impresión 0 26-05-2003 20:36:36


La franja horaria es GMT +2. Ahora son las 19:08: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