AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

USB Stick erkennen

Ein Thema von Jelly · begonnen am 28. Feb 2004 · letzter Beitrag vom 10. Apr 2012
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.510 Beiträge
 
Delphi XE Professional
 
#21

AW: USB Stick erkennen

  Alt 9. Feb 2012, 14:17
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FUSB: TComponentUSB;
    procedure DoOnConnect(Sender: TObject); //<- TNotifyEvent
    procedure DoOnDisconnect(Sender: TObject); //<- TNotifyEvent
  public
    { Public-Deklarationen }
  end;

...

procedure TForm1.DoOnConnect(Sender: TObject);
begin
  ShowMessage('Gerät angeschlossen');
end;

procedure TForm1.DoOnDisconnect(Sender: TObject);
begin
  ShowMessage('Gerät entfernt');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FUSB := TComponentUSB.Create(self);
  FUSB.OnUSBArrival := DoOnConnect;
  FUSB.OnUSBRemove := DoOnDisconnect;
end;
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
MiKaEr
(Gast)

n/a Beiträge
 
#22

AW: USB Stick erkennen

  Alt 9. Feb 2012, 14:18
ups.

sorry. jetzt weiß ich auch was ich falsch gemacht habe

ich habe das Sender: TObject vergessen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
27.819 Beiträge
 
Delphi XE3 Professional
 
#23

AW: USB Stick erkennen

  Alt 9. Feb 2012, 14:40
PS: Delphi-Referenz durchsuchenTNotifyEvent

mein einziges problem ist:

wie sieht der aufbau eines solchen TNotifyEvents aus?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.510 Beiträge
 
Delphi XE Professional
 
#24

AW: USB Stick erkennen

  Alt 9. Feb 2012, 14:43
Hast Du auch selbst vorher nachgeschaut?
Zitat:
Code:
typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);
Für reine Delphianer nicht sehr informativ
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
MiKaEr
(Gast)

n/a Beiträge
 
#25

AW: USB Stick erkennen

  Alt 9. Feb 2012, 14:45
mir fällt gerade auf, dass der auf der letzten seite vorgeschlagene source-code (WMDeviceChange) nicht funktioniert.

folgende funktion gibt keinen wert zurück, da if (Maske and 1) = 1 niemals zutrifft:

Delphi-Quellcode:
 function GetDrive(pDBVol: PDevBroadcastVolume): string;
 var
  i: Byte;
  Maske: DWORD;
 begin
  if (pDBVol^.dbcv_flags and $0001) = $0001 then
   begin
    Maske := pDBVol^.dbcv_unitmask;
    for i := 0 to 25 do
     begin
      if (Maske and 1) = 1 then
       Result := Char(i + Ord('A')) + ': ';

      Maske := Maske shr 1;
     end;
   end;
 end;

// GetDrive(PDevBroadcastVolume(Msg.lParam))

Geändert von MiKaEr ( 9. Feb 2012 um 14:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.510 Beiträge
 
Delphi XE Professional
 
#26

AW: USB Stick erkennen

  Alt 9. Feb 2012, 14:58
Welcher Wert steht denn in Maske?
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
27.819 Beiträge
 
Delphi XE3 Professional
 
#27

AW: USB Stick erkennen

  Alt 9. Feb 2012, 16:18
@Detlev: War auch vorwiegend als Beispiel gedacht.
'ne lokale OH gibt's och noch, im Delphi-Quelltext steht es ganz genau und das CodeInsight, bzw. die Autovervollständigung zeichen auch die wichtigen pascalbezogenen Infos.

Falls man sich mal die Beschreibung zu DevBroadcastVolume ansieht, dann fällt Folgendes auf.
Zitat:
Gets the bit unit mask of the device. IE (bit 0 = A:, bit 1 = B:, etc..)
Mit der 1 liefert es also nur ein Ergebnis, wenn sich am ersten Laufwerk (also A: ) etwas verändert hat.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.510 Beiträge
 
Delphi XE Professional
 
#28

AW: USB Stick erkennen

  Alt 9. Feb 2012, 16:29
Das sehe ich aber anders.
Zitat:
Delphi-Quellcode:
for i := 0 to 25 do
begin
  if (Maske and 1) = 1 then Result := Char(i + Ord('A')) + ': ';
  Maske := Maske shr 1;
end;
Die Maske wird 26 mal auf gesetztes Bit geprüft und nach rechts geshiftet.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
27.819 Beiträge
 
Delphi XE3 Professional
 
#29

AW: USB Stick erkennen

  Alt 9. Feb 2012, 18:52
Hab bei der Leerzeile aufgehört zu lesen ... wer kann den Ahnen, daß da noch was Wichtiges kommt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
163 Beiträge
 
Delphi 7 Enterprise
 
#30

AW: USB Stick erkennen

  Alt 10. Feb 2012, 16:33
mir fällt gerade auf, dass der auf der letzten seite vorgeschlagene source-code (WMDeviceChange) nicht funktioniert.

folgende funktion gibt keinen wert zurück, da if (Maske and 1) = 1 niemals zutrifft:

Der Fehler liegt im Code
Code:
if (pDBVol^.dbcv_flags and $0001) = $0001 then
Der Wert "$0001" ist für den Wechsel eines CD/DVD-Laufwerks gültig.
Mit USB-Drives (Stick, Harddisk)) aber wird die dann folgende Schleife niemals durchlaufen, also der Laufwerksbuchstabe nicht erkannt.

Für USBs muss es vielmehr heißen:
Code:
 if (pDBVol^.dbcv_flags and DBTF_REMOVE) = DBTF_REMOVE then
wobei:
Code:
Const
  DBTF_REMOVE = $0000;
  DBTF_MEDIA = $0001;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf