Einzelnen Beitrag anzeigen

shifter

Registriert seit: 2. Jan 2005
175 Beiträge
 
Delphi 2007 Enterprise
 
#31

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 11. Nov 2005, 16:51
Ich habe es noch ein mal anders versucht :
Delphi-Quellcode:
Var buf : Pointer;
    re : boolean;
    bow : dword;
    bor : dword;
    lcm : pointer;
    inf : thandle;
    tot : dWord;
    tot1 : dWord;
begin

  TapeHandle := OPENDRIVE_READ;
  Security.nLength := SizeOf( TSecurityAttributes );
  Security.bInheritHandle := False;
  Security.lpSecurityDescriptor := nil;

  SetTapePosition ( TapeHandle, 4, 0, 0,0, False );

  buf := VirtualAlloc( nil, 512, MEM_COMMIT, PAGE_READWRITE );
  inf := CreateFile('C:\mt.exe',GENERIC_READ,0,
              @Security,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);

  tot := 0;
  tot1:= 0;
  bor := 1;
  While bor>0 do Begin
    lcm := nil;
    re := ReadFile(inf,buf,512,bor,lcm);
    If bor>0 Then Begin
      lcm := nil;
      re := WriteFile( TapeHandle, buf, bor, bow, lcm);
      Inc( tot, bor );
      Inc( tot1,bow );
    End;
  End;
  ShowMessage('Read :'+inttostr(tot)+chr(10)+'Write :'+IntToStr(tot1));

  WriteTapeMark( TapeHandle, 0, 1, False );

  CloseHandle( inf );
  CloseDrive;

  VirtualFree( buf, 512, MEM_DECOMMIT );
Es sieht garnicht so schlecht aus.
Es wird auf dem Band aufgenohmen aber ab den Offset 4 jest 512 Bytes gibts differenz zur orginal file. Die differenz ist 8 Byte Lang und wiederholt sich regelmessig jede 512 Bytes.

Und am Ende Bekomme ich noch ein mechtiges Delphi Abstürz. vermutlich geht hier um den speicher ( immer noch )
  Mit Zitat antworten Zitat