Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2007
xeelons xeelons is offline
Registrado
 
Registrado: jul 2007
Posts: 4
Poder: 0
xeelons Va por buen camino
Exclamation necesito ayudacon este programa

hace uno meses enpece con delphi

tengo este codigo

pero no se que le puedo colocar en uses

Código:
var

  buf:array[0..511] of byte;
  c:char;
  j:word;
  r:register;
begin
  r.ax:=$0201;                      //Read Cyl 0, Hd 0, Sec
  r.cx:=2;
  r.dx:=$80;
  r.bx:=ofs(buf);
  r.es:=seg(buf);
  intr($13,r);
  write(buf[0],’ ’,buf[1],’:’);       // {display it}
  j:=2;
  while buf[j]<>0 do
    begin
      write(char(buf[j]));
      j:=j+1;
    end;
  writeln;
  write(’Do you want to erase the sector? ’);

end.

Última edición por dec fecha: 04-08-2007 a las 00:44:55.
Responder Con Cita
  #2  
Antiguo 04-08-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Ese código que pones no es de Delphi propiamente dicho, es de Turbo Pascal, un poco viejo por cierto. Lo que haces en el código, leer un sector, al final preguntas pero no pones codigo para contestar, simplemente muestra el sector y ya.

Eso que pones es un procedimiento o mas bien un programa tipo "consola" y delphi por defecto no genera ese tipo de programas. Para ello hay que decirl explicitamente que vas a hacer una aplicacion de consola.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #3  
Antiguo 04-08-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Como ya te han dicho, ese código no creo que sea de delphi, de hecho no creo que funcione en windows, al menos no en Windows XP. Por suerte, no hace falta andar jugando con las interrupciones para leer el primer sector del disco.

Es así de sencillo:
Código:
uses
  SysUtils, Classes;

var
  Buffer: Array[1..512] of Char;
begin
  with TFileStream.Create('\\.\PhysicalDrive0',fmOpenRead or fmShareDenyNone) do
  try
    ReadBuffer(Buffer,Sizeof(Buffer));
    // Ahora tenemos el sector 0 (tambien conocido por MBR) en el buffer
  finally
    Free;
  end;
end.
Ahora la pregunta es que hacer con la información obtenida. Una buena opción es guardar el sector de arranque en un archivo, nunca viene mal tener una copia de seguridad.
Código:
var
  Buffer: Array[0..$1FF] of Byte;
begin
  with TFileStream.Create('\\.\PhysicalDrive0',fmOpenRead or fmShareDenyNone) do
  try
    ReadBuffer(Buffer,Sizeof(Buffer));
  finally
    Free;
  end;
  with TFileStream.Create('C:\mbr.bin',fmCreate) do
  try
    WriteBuffer(Buffer,Sizeof(Buffer));
  finally
    Free;
  end;
end.
O podemos intentar destripar algo de su contenido:
Código:
uses
  SysUtils, Classes;

var
  Buffer: Array[0..$1FF] of Byte;
  i: Integer;
begin
  Writeln;
  with TFileStream.Create('\\.\PhysicalDrive0',fmOpenRead or fmShareDenyNone) do
  try
    Writeln('Leyendo el el MBR ...');
    ReadBuffer(Buffer,Sizeof(Buffer));
    // Ahora lo destripamos un poco
    if (Buffer[$1FE] = $55) and (Buffer[$1FF] = $AA) then
      Writeln('El disco es "bootable"')
    else
      Writeln('El disco NO es "bootable"');
    for i:= 0 to 3 do
    begin
      if Buffer[$01BE + ($10 * i)] = $80 then
        Writeln(Format('La particion numero %d es "bootable"',[i]))
      else if Buffer[$01BE + ($10 * i)] = 0 then
        Writeln(Format('La particion numero %d NO es bootable',[i]))
      else
        Writeln(Format('La particion numero %d esta mal formada',[i]));
      // Para un windows el tipo es el 7
      Writeln(Format('La particion numero %d es del tipo: %d',[i,Buffer[$01C2 + ($10 * i)]]));
    end;
  finally
    Free;
  end;
end.
Y aun podríamos jugar algo más ...

Última edición por seoane fecha: 04-08-2007 a las 02:23:28.
Responder Con Cita
  #4  
Antiguo 04-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
[quote = seoane]
Ahora la pregunta es que hacer con la información obtenida. Una buena opción es guardar el sector de arranque en un archivo, nunca viene mal tener una copia de seguridad.
[/quote]

Disculpen mi ignorancia, si guardo el sector de arranque es posible volver a restituirlo si se daña???????
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 04-08-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por eduarcol
Disculpen mi ignorancia, si guardo el sector de arranque es posible volver a restituirlo si se daña???????
Desde windows lo veo difícil, ya que sin mbr no puedes iniciar windows

Pero una copia guardada se podría restaurar perfectamente, por ejemplo, desde un Live Cd de linux. Utilizando el comando dd
Código:
dd if=mbr.bin of=/dev/hda bs=512 count=1
mbr.bin = Archivo donde esta guardada la copia
/dev/hda = Primer disco duro (hdb para el segundo, etc ...)

Aunque si le tienes manía al linux, siempre podemos recurrir a los clásicos. Aquí cuento como copiar el mbr a un disquete de inicio y luego restaurarlo usando el programa RESTORRB:
http://www.clubdelphi.com/trucos/index.php?id=356

Por ultimo decir, que no hace mucho tuve que reinstalar windows en un equipo donde también tengo instalado linux. Como es sabido, el windows copia su propio mbr durante la instalación, impidiendo así que el linux pudiese volver a arrancar. Hay descritas muchas formas de reparar esto, pero una bastante sencilla es guardar una copia del mbr, instalar windows, y restaurar el mbr. Mas fácil y rápido imposible.
Responder Con Cita
  #6  
Antiguo 04-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por seoane Ver Mensaje
Desde windows lo veo difícil, ya que sin mbr no puedes iniciar windows

Esa era mi duda, pero lo dicho eres el barbaro
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #7  
Antiguo 04-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Perdonad mi atraso, pero despues de 18 horas sin conexion ya pude.
Gracias por vuestras respuestas he aprendido mucho, pero mucho de delphi, verdad que se llama asi?.
Que suerte que me hice entender con mi pregunta.
Que no funcione con windowns no es problema de todos modos no tengo ordenador.
Saluditos
Responder Con Cita
  #8  
Antiguo 04-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caral Ver Mensaje
Hola
Perdonad mi atraso, pero despues de 18 horas sin conexion ya pude.
Gracias por vuestras respuestas he aprendido mucho, pero mucho de delphi, verdad que se llama asi?.
Que suerte que me hice entender con mi pregunta.
Que no funcione con windowns no es problema de todos modos no tengo ordenador.
Saluditos
, Ah que mi amigo Carlos, es usted bueno para las ironías.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



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
Probad este programa para visualizar vuestros archivos con extensión 3ds kakarotv5 Gráficos 0 26-02-2007 14:26:57
Necesito interbase para un programa con interbase David Conexión con bases de datos 2 20-04-2006 00:23:55
Hola Es mi primer mensaje en este Foro y necesito ayuda para archivos XML Juan_Carlos_P Gráficos 2 08-08-2005 19:11:17
Como realizo este programa? Neo Varios 0 09-06-2003 18:08:55


La franja horaria es GMT +2. Ahora son las 00:16:24.


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
Copyright 1996-2007 Club Delphi