Kezdőoldal » Számítástechnika » Programozás » Pascal: hogy lehetne átírni...

Pascal: hogy lehetne átírni ezt a programot, hogy csak bizonyos területeit olvassa a lemeznek?

Figyelt kérdés

Például, ha csak a partíciós táblát és boot szektort szeretném olvasni, akkor mit kell tenni?

Egyáltalán, FPC alatt biztonságos a közvetlen lemez-hozzáférés, vagy esetleg kárt is tud okozni? (pl. nemcsak olvas hanem ír is), bár ahogy látom, ez fájlba írja a tartalmat...

Valahonnan kereséssel sikerült egy kódot szerezni, az érdekelne, ez miképpen módosítható úgy, hogy pl. csak bizonyos szektorokat olvasson, megadott méretig és a cilindereket és fejeket is növelje olvasás közben (régen, a '16 bit-es DOS idejében foglalkoztam ilyennel a '90-es években ilyen lemez-olvasással, azóta ilyen téren sokat felejtettem). :-(

[link]


Kód milyenségéről nem tehetek, meg szintaktikai hibákról sem.

"end." utána valami java kódot beszúrt, nem tudom miért, ezek szerint ez az adott oldal Pascal online fordítója.



2018. febr. 20. 20:29
 1/2 anonim ***** válasza:

Az van, hogy a windows nem nagyon enged hozzáférni a partíciós táblához és a boot szektorhoz sem.

Ehhez egyébként is komoly előtanulmányok szükségesek, már ha nem akarod magad alól kivágni a fát.


A biztonságot nem a programnyelv, hanem a programozó tudása garantálja, már ha képes erre.


Amit tudok javasolni, az az, hogy emulátorban (pl. bochs) futtass egy rendszert, és ott próbálkozz a pascalban írt programoddal.


Amúgy, azt olvasol alacsony szinten a HDD-ről, amit csak akarsz, tehát bármelyik szektort elérheted, írhatod, olvashatod. Javaslom először a FAT filerendszeren gyakorolni, mivel a népszerűbbek közül az a legegyszerűbb.


A partíciós tábla egyébként mindössze a file rendszereket tartja nyilván, te valószinűleg a FAT táblára gondolhattál a szektorok olvasásával, írásával kapcsolatban.

2018. febr. 20. 21:00
Hasznos számodra ez a válasz?
 2/2 coopper ***** válasza:

Szia.


Szerintem két módszer van arra, hogy "máshonnan" olvasd be a bájtokat (Mivel fileként kezeli a a merevlemezt) :


1. Szekvenciálisan olvasod be egymás után a rekordokat :

Tehát :


sz:=strm.Read(buf[1], length(buf)); // Első rekord

sz:=strm.Read(buf[1], length(buf)); // második rekord

stb,stb.


Vagy használod a Streamben lévő position property-t :


strm.position:=2048; // ez a második rekord cime

sz:=strm.Read(buf[1], length(buf)); // második rekord


De ehhez valóban érdemesebb egy virtuális gépen próbálkozni, főleg az IRÁSSAL, mert valóban hazavághatod a rendszered egy két rossz irással. Illetve nem árt mélyen ismerni a lemezek felépítését is, hogy valóban tudd mit olvasol be és honnan.


Sok sikert.

üdv.

2018. febr. 20. 21:28
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!