Thema: Delphi Klon floppy

Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 30. Apr 2003, 10:01
Der andere Schutz besteht dann wohl in den restlichen 2860 Sektoren, die du nicht kopierst. Ist dir nicht aufgefallen, dass das Kopieren nicht etwas zu schnell war?

Zudem: Ich hatte jetzt keine Lust mich durch die Windows.pas zu schlagen in der Hoffnung, dass ich herausbekomme was 49 bedeuten soll. Also habe ich es durch MB_OKCANCEL ersetzt. Neben dem, das es schlechter Programmierstil ist, wird es in der professionellen Softwareentwicklung (=Beruf) nicht gerade gern gesehen, wenn man die Konstanten über Bord wird und durch Zahlen ersetzt. Du musst immer damit rechnen, dass andere den Quellcode lesen wollen.

Delphi-Quellcode:
function CopyDisk: Boolean;
var
  raw: TRawDrive;
  Buf: Pointer;
  Sectors: Integer;
  BytesPerSector: Integer;
begin
  Result := False;
  Raw := RawOpenDrive('a');
  if Raw.Handle <> 0 then
  begin
   // wieviel Sektoren sind überhaupt auf der Diskette
    with Raw.DiskGeometry do
      Sectors := Cylinders * TracksPerCylinder * SectorsPerTrack;
    BytesPerSector := Raw.DiskGeometry.BytesPerSector;

    GetMem(Buf, Sectors * BytesPerSector); // genug Speicher reservieren
    try
      try
        RawReadSectors(Raw, Buf^, Sectors); // alle Sektoren einlesen, das dauert
      finally
        RawCloseDrive(Raw);
      end;
      if Application.MessageBox('Neue Floppy Einlegen','Meldungsfenster', MB_OKCANCEL) = IDYES then
      begin
        Raw := RawOpenDrive('a');
        try
          RawWriteSectors(Raw, Buf^, Sectors); // alle Sektoren schreiben, dauert noch länger
        finally
          RawCloseDrive(Raw);
        end;
        Result := True; // Kopieren war erfolgreich
      end;
    finally
      FreeMem(Buf);
    end;
  end;
end;
  Mit Zitat antworten Zitat