Autor |
Beitrag |
jackie05
      
Beiträge: 357
|
Verfasst: Mo 06.04.09 01:51
Hallo,
wie kann ich die Sektoren/Cluster eines Laufwerkes auslesen?
Es sollte ein Programm werden, das z.B. verlorene Bilder retten kann.
Könnt Ihr mir vieleicht Tips geben, mit was ich mich besser auseinander setzen muss und wie das so abläuft mit den einzelnen Sektoren?
Ich bedanke mich schonmal im Voraus.
MfG Moderiert von Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 06.04.2009 um 09:35
Zuletzt bearbeitet von jackie05 am Mo 06.04.09 03:11, insgesamt 1-mal bearbeitet
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 06.04.09 02:21
jackie05 hat folgendes geschrieben : | Es sollte ein Programm werden, das z.B. verlorene Bilder retten kann. |
In wie fern "verloren"? Gelöscht, aber noch nicht überschrieben? Bei Dateien deren Typ bekannt ist, ist das sicher irgendwie möglich und die Richtung in die du gehen willst scheint mir die richtige zu sein.
Es könnte sich lohnen, den Programmierer von HxD zu fragen, ob er dir teile des Sources zur Betrachtung überlässt, andernfalls Zitiere ich mal einen Thread, der beim Suchen nach "Sektoren" im DF sofort auffällt: BenBE hat folgendes geschrieben : | die Windows-API bietet Dir via CreateFile und dem passenden Geräte-Namen alle nötigen Dinge an. Schau Dir einfach mal den Source des HxD an ^^ |
Falls es sich dagegen um Bilddateien handelt, die nicht mehr anzeigbar sind weil sie irgendwie korrumpiert sind, ist das der falsche Ansatz.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Zuletzt bearbeitet von JayEff am Mo 06.04.09 02:35, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 06.04.09 02:28
Dafür kannst du Raw Disk Access benutzen:
www.torry.net/authorsmore.php?id=4451
Aber sei vorsichtig, wenn du aus Versehen auf die Festplatte schreibst, dann können Daten verloren gehen. 
|
|
jackie05 
      
Beiträge: 357
|
Verfasst: Mo 06.04.09 03:17
Vielen Dank euch beiden.
Das mit dem Schreiben auf der Festplatte wird mir nicht passieren, ich teste das ganze ambesten erstmal mit meiner SD Karte.
Mir ist schon klar, das z.B. gelöschte Dateien mit dem neuen überschrieben werden kann und das alte somit nicht mehr Wiederherstellbar ist.
Man sollte ja sofort "nach dem die Dateien verloren gegangen sind", versuchen diese Wiederherzustellen, bevor neue Dateien hinzukommen.
Ich werde mir mal die Links ankucken.
Vielen Dank.
Edit: Ich habe mir mal die Raw Disk Access Komponente Installiert und erhalte folgende fehlermeldung:
Delphi-Quelltext 1:
| [Fataler Fehler] Unit1.pas(7): Datei nicht gefunden: 'DesignIntf.dcu' |
Die Datei DesignIntf.dcu ist nicht dabei, diese wird für den Komponent benötigt.
Wo bekomme ich diese Datei eigentlich her?
MfG
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 06.04.09 03:40
[quote=" jackie05"(557163)]Man sollte ja sofort "nach dem die Dateien verloren gegangen sind", versuchen diese Wiederherzustellen, bevor neue Dateien hinzukommen./quote]Wenns dir darum geht, sollte jaenickes Link der richtige sein. Dabei gibt es halt das Problem, dass du keinerlei Möglichkeit hast, herauszufinden, wo die Bilder vorher lagen (Durch Fragmentierung und die Algorithmen die viele Flashspeicher zur optimalen Nutzung anwenden, können sie ja praktisch überall verteilt sein).
Die dcu (=Delphi compiled unit) ist eine kompilierte .pas-Datei. Ich kann dir auch nicht sagen, woher du die bekommen kannst, welche Delphi-Version nutzt du denn? Es kann sein, dass du die .pas hast. Falls das so ist, kannst du sie kompilieren und dadurch die .dcu erhalten.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
jackie05 
      
Beiträge: 357
|
Verfasst: Mo 06.04.09 03:44
Danke Dir.
Ich benutze Delphi 7 Enterprice.
Ich habe bei Optionen im Suchpfad um diese Zeile ergänzt:
C:\Programme\Borland\Delphi7\Source\ToolsAPI
Jetzt bekomme ich diese fehlermeldung:
[Fataler Fehler] DesignEditors.pas(530): Datei nicht gefunden: 'Proxies.dcu'
Das bekomme ich auch noch hin und Danke euch für die Hilfe.
Edit: Jetzt funktioniert das mit der Komponent, ich musste noch paar Packages hinzufügen.
MfG
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 06.04.09 05:48
jackie05 hat folgendes geschrieben : | Das mit dem Schreiben auf der Festplatte wird mir nicht passieren, ich teste das ganze ambesten erstmal mit meiner SD Karte. |
Mit einer SD-Karte wird das kaum klappen.
Ich meinte aber vor allem, dass du beim Schreiben an eine falsche Stelle die Partitionierung oder andere Daten verloren gehen könnten. Und die Komponente macht auch das, die Demo, die dabei war, glaube ich auch.
Was DesignIntf usw. angeht: Da reicht das eine Package DesignIde unter requires:
www.delphipraxis.net/topic1157.html
www.delphipraxis.net/post264040.html
|
|
jackie05 
      
Beiträge: 357
|
Verfasst: Do 09.04.09 03:32
Danke.
Eine Frage habe ich nocht:
Wie ist das mit dem überprüfen ob bei mancher Sektoren Bilder drin stecken, muss man dafür Assembler gut können oder wie läuft das ab?
MfG
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 09.04.09 04:30
Die Analyse der Daten kann man auch gut in Delphi machen, nur die Geschwindigkeit mag etwas langsamer sein, hochoptimierter Assemblercode ist da sicher am schnellsten. Aber dafür muss man auch die entsprechenden Kenntnisse haben. Es ist nicht so einfach nicht nur Assemblercode zu schreiben sondern auch welchen zu schreiben, der schneller als Delphicode ist. Deshalb: Optimiere lieber erst einmal deinen Delphicode und schau wie schnell das läuft.
Letztlich musst du versuchen entsprechende Signaturen zu identifizieren und dann entsprechend des vermutlich vorgefundenen Formates zu schauen ob du gültige Daten findest. Das musst du am besten objektorientiert und modular aufbauen um dir die Arbeit zu erleichtern, denn sonst musst du für jedes Format vieles mehrfach schreiben.
|
|
|