Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bandlaufwerk / Streamer ansprechen unter Delphi. (https://www.delphipraxis.net/56533-bandlaufwerk-streamer-ansprechen-unter-delphi.html)

shifter 7. Nov 2005 15:14


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

Flocke 7. Nov 2005 16:27

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 MSDN-Library durchsuchenGetTapeParameters, MSDN-Library durchsuchenGetTapePosition, MSDN-Library durchsuchenGetTapeStatus, MSDN-Library durchsuchenSetTapeParameters und MSDN-Library durchsuchenSetTapePosition.

Ein kleines Programm in C das das Tape anspricht habe ich hier gefunden (Basisseite).

shifter 7. Nov 2005 16:35

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
 
DANKE ERSTMAL FÜR DIE SCHNELLE ANTWORT, WERDE SOFORT CHECKEN !!

DANKE

und gruss
aus W-tal

shifter 7. Nov 2005 21:29

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:

DWORD GetTapeParameters(
  HANDLE hDevice,
  DWORD dwOperation,
  LPDWORD lpdwSize,
  LPVOID lpTapeInformation
);
Und so habe ich es umgeschrieben

Delphi-Quellcode:

Var Si : dword;
    ew : dword;
    ti : GMP;
Begin
 
  ...

  ew := GetTapeParameters( TapeHandle, GET_TAPE_MEDIA_INFORMATION, Size, @TI );

  If TI.WriteProtected Then ShowMessage('WriteProtect');

End;
GMP ist
Delphi-Quellcode:
Type
  GMP              = Record
    Capacity       : LongInt;
    Remaining      : LongInt;
    BlockSize      : dWORD;
    PartitionCount : dWORD;
    WriteProtected : Boolean;
  End;
Aber irgend wie Functioniert Das Nicht !!!

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

SirThornberry 7. Nov 2005 21:31

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
 
wie hast du die Funktion übersetzt? hast du eventuell StdCall vergessen?

Flocke 7. Nov 2005 22:14

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:
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}
Übrigens ist sicher der ganze Abschnitt "Delphi-Referenz durchsuchenBackup Reference" (ms-help://borland.bds3/fileio/base/backup_reference.htm) bzw. MSDN Startseite für dich interessant.

//EDIT: Typen korrigiert

shifter 7. Nov 2005 23:25

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
 
Ja das ist das,
jetzt sieht es auf jeden fall besser aus !

Danke Flocke !!!!!!!!

shifter 8. Nov 2005 00:17

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

shifter 8. Nov 2005 00:52

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

Flocke 8. Nov 2005 08:49

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.
 
Zitat:

Zitat von shifter
LongBool habe ich ersetzt mit Boolean
Packed record mit normalen record

War - wie geschrieben - ungetestet. Ich habe die Typen oben mal angepasst, falls mal jemand danach sucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.
Seite 1 von 4  1 23     Letzte »    

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