AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bandlaufwerk / Streamer ansprechen unter Delphi.
Thema durchsuchen
Ansicht
Themen-Optionen

Bandlaufwerk / Streamer ansprechen unter Delphi.

Offene Frage von "shifter"
Ein Thema von shifter · begonnen am 7. Nov 2005 · letzter Beitrag vom 19. Aug 2009
Antwort Antwort
Seite 4 von 4   « Erste     234   
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
shifter

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

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 11. Nov 2005, 18:00
Der Fehler am Ende, kommt ungefähr nach 2-5 sek und lautet :

bds.exe - bordbk90N.dll
Internal Error IMP-2627

nach par mal ok kommt

Acces violation adress xy in module 'bordbk90N.dll'. Read of adresse xy.

  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#33

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 11. Nov 2005, 19:20
1. Microsoft empfiehlt ~100 Blocks am Anfang einer Partition zu überspringen, da manche Streamer dort eigene Daten ablegen, du solltest also jeweils ein
SetTapePosition(TapeHandle, TAPE_LOGICAL_BLOCK, 0, 100, 0, false); vor das Lesen und Schreiben setzen.

2. Du MUSST bei ReadFile als 5. Parameter nil angeben, ansonsten meint Windows, dass du überlappende I/O-Operationen durchführen willst. Das dürfte deine verzögerten Abstürze verursachen.

3. Du solltest den Speicher mit
VirtualFree(buf, 0, MEM_RELEASE); wieder freigeben.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
shifter

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

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 12. Nov 2005, 13:18
Hi, Danke .

Wede sofort in angriff nehmen.

Weist du vieleicht wo kann mann überprüfen den eingelegten band typ ?
Also bei anderen back.prog. zeigt der mir an welchen band tüp ich gerade in laufwerk habe,
zb 50GB oder 24 GB ...

Gruss
seba
  Mit Zitat antworten Zitat
shifter

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

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 12. Nov 2005, 14:23
Zitat:
Zitat von Flocke:
1. Microsoft empfiehlt ~100 Blocks am Anfang einer Partition zu überspringen, da manche Streamer dort eigene Daten ablegen, du solltest also jeweils ein
SetTapePosition(TapeHandle, TAPE_LOGICAL_BLOCK, 0, 100, 0, false); vor das Lesen und Schreiben setzen.
Wenn das Band ist Gelöscht dann kann ich nicht weiter nach hinten vorspullen wie der letzte verwende Block, in falle direckt nach dem EraseTape ist das Block Nr. 1. Somit wenn ich setpos auf block 100 mache bleibt er bei block nr. 1 stehen.

Zitat:
2. Du MUSST bei ReadFile als 5. Parameter nil angeben, ansonsten meint Windows, dass du überlappende I/O-Operationen durchführen willst. Das dürfte deine verzögerten Abstürze verursachen.

3. Du solltest den Speicher mit
VirtualFree(buf, 0, MEM_RELEASE); wieder freigeben.
Exackt habe ich so gemacht, Delphi hängt sich auf, bds process muss über taskmanager beendet werden.

schade, mir ist schon schlecht ;

seba
  Mit Zitat antworten Zitat
shifter

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

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 14. Nov 2005, 02:27
Hi,

ich glaube ich hab das Problemm gelöst, es funktioniert.

Aber zurück zum den Roport.

Das erste Report von DriveParameters hat angezeigt da das laufwerk nicht unterstützt Compression,
nach dem ich ein bespieltes band mit anderen software eingelegt habe und den test nochmal durchgeführt habe ist folgendes ergebis gekommen :

  • Drive information:
    ECC: No
    Compression: Yes
    DataPadding: No
    ReportSetmarks: Yes
    DefaultBlockSize: 512
    MaximumBlockSize: 65536
    MinimumBlockSize: 1
    MaximumPartitionCount: 2

Siehe Compression.


seba
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#37

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 19. Aug 2009, 11:43
Der Thread ist ja aus 2005 hat zufällig jemand daran weiter geschrieben und eine halbwegs brauchbare Lösung
Wäre schon nett sonst muß ich alles nochmal machen und mich auch mit den Problemen auseinandersetzen

Grüße Joachim
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz