FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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|| |
#3
|
||||
|
||||
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. 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. 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. Última edición por seoane fecha: 04-08-2007 a las 02:23:28. |
#4
|
||||
|
||||
[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 |
#5
|
||||
|
||||
Cita:
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 /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. |
#6
|
||||
|
||||
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 |
#7
|
||||
|
||||
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 |
#8
|
|||
|
|||
Cita:
Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|