![]() |
Bandlaufwerk / Streamer ansprechen unter Delphi.
Hi,
ich bin auf der suche nach eine möglichkein ein bandlaufwerk anzusprechen( Read / Save / Format ), es steht leider nicht sehr viel darüber geschrieben. Ein oder andere artikel habe ich gefunden aber nichts konkretes. Es handelt sich hier um SCSI Bandlaufwerke DDS2-4 und SLR wie auch DLT. Könnt Ihr mir behilflich sein ??? Gruss seba |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Du kannst das erste Bandlaufwerk wie eine Datei mit dem Dateinamen \\.\tape0 öffnen. Ein-/Ausgabe sollte mit den normalen Funktionen gehen. Es gibt die API-Funktionen
![]() ![]() ![]() ![]() ![]() Ein kleines Programm in C das das Tape anspricht habe ich ![]() ![]() |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
DANKE ERSTMAL FÜR DIE SCHNELLE ANTWORT, WERDE SOFORT CHECKEN !!
DANKE und gruss aus W-tal |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Da hab ich noch eine Frage / Problemm,
und zwar es geht um die Function GetTapeParameters So Sieht die in C aus
Code:
Und so habe ich es umgeschriebenDWORD GetTapeParameters( HANDLE hDevice, DWORD dwOperation, LPDWORD lpdwSize, LPVOID lpTapeInformation );
Delphi-Quellcode:
GMP istVar Si : dword; ew : dword; ti : GMP; Begin ... ew := GetTapeParameters( TapeHandle, GET_TAPE_MEDIA_INFORMATION, Size, @TI ); If TI.WriteProtected Then ShowMessage('WriteProtect'); End;
Delphi-Quellcode:
Aber irgend wie Functioniert Das Nicht !!!
Type
GMP = Record Capacity : LongInt; Remaining : LongInt; BlockSize : dWORD; PartitionCount : dWORD; WriteProtected : Boolean; End; Auch wenn ich GMP.Capacity Abfrage oder andere parameter bekomme ich nur sch... aber nicht das was ich haben will. Wo hab ich misst gebaut ? gruss seba |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
wie hast du die Funktion übersetzt? hast du eventuell StdCall vergessen?
|
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Also die Funktionen für den Tape-Zugriff sind ja in Windows.pas deklariert, allerdings die Strukturen nicht. LARGE_INTEGER ist IMHO ein int64. Hier meine Übersetzung (ungetestet):
Delphi-Quellcode:
Übrigens ist sicher der ganze Abschnitt "
type
PTapeGetMediaParameters = ^TapeGetMediaParameters; _TAPE_GET_MEDIA_PARAMETERS = record Capacity: int64; Remaining: int64; BlockSize: DWORD; PartitionCount: DWORD; WriteProtected: Boolean; end; {$EXTERNALSYM _TAPE_GET_MEDIA_PARAMETERS} TTapeGetMediaParameters = _TAPE_GET_MEDIA_PARAMETERS; TAPE_GET_MEDIA_PARAMETERS = _TAPE_GET_MEDIA_PARAMETERS; {$EXTERNALSYM TAPE_GET_MEDIA_PARAMETERS} PTapeGetDriveParameters = ^TTapeGetDriveParameters; _TAPE_GET_DRIVE_PARAMETERS = record ECC: Boolean; Compression: Boolean; DataPadding: Boolean; ReportSetmarks: Boolean; DefaultBlockSize: DWORD; MaximumBlockSize: DWORD; MinimumBlockSize: DWORD; MaximumPartitionCount: DWORD; FeaturesHigh: DWORD; EOTWarningZoneSize: DWORD; end; {$EXTERNALSYM _TAPE_GET_DRIVE_PARAMETERS} TTapeGetDriveParameters = _TAPE_GET_DRIVE_PARAMETERS; TAPE_GET_DRIVE_PARAMETERS = _TAPE_GET_DRIVE_PARAMETERS; {$EXTERNALSYM TAPE_GET_DRIVE_PARAMETERS} ![]() ![]() //EDIT: Typen korrigiert |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Ja das ist das,
jetzt sieht es auf jeden fall besser aus ! Danke Flocke !!!!!!!! |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Hier ist aber noch ein Hacken !
Wenn ich zb. Anzeigen möchte DefaultBlockSize sollte eingentlich wert rauskommen mit 512 kommt aber 2, sowie MinimumBlockSize kommt ein exotisches Wert der grösser ist als MaximumBlockSize der eben so exotisch erscheint. gruss seba |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Ich hab's !
Entgültig ist es geschaft. Problemme hat es gemacht : LongBool habe ich ersetzt mit Boolean Packed record mit normalen record und func. 100% Danke euch allen gruss seba |
Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz