Newsgroup: it.comp.lang.delphi
Titolo: comandi su macchina digitale

Dopo aver trovato la lettera assegnata da windows alla macchina digitale usb
sono entrato nelle due cartelle che contengono i file e ho caricato i nomi
in 3 listbox, jpg,wav,avi.
Ho inserito pure i comandi per eliminare copiare ed
eseguire(DeleteFile,CopyFile,ShellExecute)  i file ma pare che nessuno
habbia successo.
Mi sapete dire il perché e come posso rimediare?
grazie
erik

erik
     Ciao MassimoB

 e magari le provo sulla mia macchina :)
Ti posto tutta la unit.
Simulando il disco "A" come macchina fotografica(che é pure una fotocamera
(vinta con i punti della esso))
tutto funziona a meraviglia.
Il programma accede al disco removibile solo se trova in esso la cartella
"DCIM".
Se vuoi t'invio il sorgente.
ciao e grazie
erik
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, OleCtrls, WMPLib_TLB, MPlayer;
type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    GroupBox1: TGroupBox;
    Foto: TListBox;
    Audio: TListBox;
    Video: TListBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn10: TBitBtn;
    SaveDialog1: TSaveDialog;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn13: TBitBtn;
    Media1: TMediaPlayer;
    Label1: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn10Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
    procedure BitBtn13Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Procedure SearchNewFile(Path:String);
    Procedure FormFoto(nFile:String);
    Procedure FrmClose(Sender: TObject; var Action: TCloseAction);
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
   Drive,Spath:String;
implementation
uses MieFunz,ShellApi,mmSystem,Jpeg;
{$R *.dfm}
Procedure TForm1.FormFoto(nFile:String);
var Img:Timage;
Frm:TForm;
begin
Frm:=Tform.Create(Self);
Img:=TImage.Create(Self);
Img.Parent:=Frm;
Img.Picture.LoadFromFile(nFile);
Img.Center:=True;
Img.Height:=Img.Picture.Height;
Img.Width:=Img.Picture.Width;
Frm.Color:=clWhite;
Frm.AutoScroll:=true;
Frm.Position:=poScreenCenter;
Frm.Caption:=ExtractFileName(nFile)
+IntToStr(Img.Picture.Height)+'-'+InTToStr(Img.Picture.width);
Frm.Show;
Frm.OnClose:=FrmClose;
end;
Procedure TForm1.FrmClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
Function GetCDDriveLetters:String;
var
  DriveLetter: Char;
begin
  for DriveLetter := 'A' to 'Z' do
  if (GetDriveType(PChar(DriveLetter+':\')) =DRIVE_REMOVABLE) then
   Result:=Result+DriveLetter;
end;
Procedure TForm1.SearchNewFile(Path:String);
var nFile:integer;
begin
Foto.Items:=SearchFile(Path,'*.jpg');
Audio.Items:=SearchFile(Path,'*.wav');
Video.Items:=SearchFile(Path,'*.avi');
Foto.ItemIndex:=0;
Audio.ItemIndex:=0;
Video.ItemIndex:=0;
Nfile:=Foto.Items.Count+
Audio.Items.Count+
Video.Items.Count;
if nFile>0 then
GroupBox1.Caption:='Sono stati trovati '+IntToStr(nFile)+' file , di cui ['+
IntToStr(Foto.Items.Count) + ' Foto ] ['+IntToStr(Audio.Items.Count) +'
Audio ] ['+
IntToStr(Video.Items.Count)+' Video]'
else GroupBox1.Caption:='Nessun file trovato';
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var L:String;
i:Integer;
Ts:TstringList;
trovata:boolean;
begin
Label1.Caption:='Ricerca in corso . . . ';
Spath:='DCIM\100PMDSC\';
L:=GetCDDriveLetters;
Ts:=TstringList.Create;
trovata:=false;
Case  Length(l)of
0:MessageDlg('Macchina non collegata',mtError,[MBOK],0);
1:begin
Ts:=SearchDir(l+':\');
if pos('DCIM',Ts.Text)=1 then begin
SearchNewFile(l+':\'+sPath);
Drive:=L;
end
else MessageDlg('Macchina non collegata',mtError,[MBOK],0);
end;
2..10:begin
For i:=1 to Length(l) do begin
Ts.Clear;
Ts:=SearchDir(L[i]+':\');
if pos('DCIM',Ts.Text)=1 then begin
SearchNewFile(l[i]+':\'+sPath);
trovata:=true;
Drive:=L;
end;
end;
if trovata = false then MessageDlg('Macchina non
collegata',mtError,[MBOK],0);
end;
end;
Label1.Caption:='';
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
if Foto.ItemIndex=-1 then
MessageDlg('Nessun file selezionato',mtError,[MBOK],0)
else
if MessageDlg('Eliminare in modo definitivo il file?',mtConfirmation,
[MBYES,MBCANCEL],0)=MRYES then Begin
DeleteFile(Drive+':\'+sPath+Foto.Items[Foto.ItemIndex]);
Foto.Items.Delete(Foto.ItemIndex);
end;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
if Audio.ItemIndex=-1 then
MessageDlg('Nessun file selezionato',mtError,[MBOK],0) else
if MessageDlg('Eliminare in modo definitivo il file?',mtConfirmation,
[MBYES,MBCANCEL],0)=MRYES then begin
DeleteFile(Drive+':\'+sPath+Audio.Items[Audio.ItemIndex]);
Audio.Items.Delete(Audio.ItemIndex);
end;
end;
procedure TForm1.BitBtn10Click(Sender: TObject);
begin
if Video.ItemIndex=-1 then
MessageDlg('Nessun file selezionato',mtError,[MBOK],0) else
if MessageDlg('Eliminare in modo definitivo il file?',mtConfirmation,
[MBYES,MBCANCEL],0)=MRYES then begin
DeleteFile(Drive+':\'+sPath+Video.Items[Video.ItemIndex]);
Video.Items.Delete(Video.ItemIndex);
end;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
var fIndx,Filtro:String;
begin
if Foto.ItemIndex=-1 then
MessageDlg('Nessun file selezionato',mtError,[MBOK],0) else begin
fIndx:=Foto.Items[Foto.ItemIndex];
Filtro:='*'+Copy(fIndx,Length(fIndx)-3,Length(fIndx));
SaveDialog1.Filter:=Filtro+'|'+Filtro;
SaveDialog1.FileName:=fIndx;
if SaveDialog1.Execute then  begin
if not FileExists(SaveDialog1.FileName) then
CopyFile(Pchar(Drive+':\'+sPath+fIndx),
Pchar(SaveDialog1.FileName),true) else
if MessageDlg('Un file con questo nome esiste giá
sovrascrivere?',mtConfirmation,
[MBYES,MBCANCEL],0)=MRYES  then
CopyFile(Pchar(Drive+':\'+sPath+fIndx),
Pchar(SaveDialog1.FileName),false);
end;
end;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
var fIndx,Filtro:String;
begin
if Audio.ItemIndex=-1 then
MessageDlg('Nessun file selezionato',mtError,[MBOK],0) else begin
fIndx:=Foto.Items[Audio.ItemIndex];
Filtro:='*'+Copy(fIndx,Length(fIndx)-3,Length(fIndx));
SaveDialog1.Filter:=Filtro+'|'+Filtro;
SaveDialog1.FileName:=fIndx;
if SaveDialog1.Execute then  begin
if not FileExists(SaveDialog1.FileName) then
CopyFile(Pchar(Drive+':\'+sPath+fIndx),
Pchar(SaveDialog1.FileName),true) else
if MessageDlg('Un file con questo nome esiste giá
sovrascrivere?',mtConfirmation,
[MBYES,MBCANCEL],0)=MRYES  then
CopyFile(Pchar(Drive+':\'+sPath+fIndx),
Pchar(SaveDialog1.FileName),false);
end;
end;
end;
procedure TForm1.BitBtn9Click(Sender: TObject);
var fIndx,Filtro:String;
begin
if Video.ItemIndex=-1 then
MessageDlg('Nessun file selezionato',mtError,[MBOK],0) else begin
fIndx:=Foto.Items[Video.ItemIndex];
Filtro:='*'+Copy(fIndx,Length(fIndx)-3,Length(fIndx));
SaveDialog1.Filter:=Filtro+'|'+Filtro;
SaveDialog1.FileName:=fIndx;
if SaveDialog1.Execute then  begin
if not FileExists(SaveDialog1.FileName) then
CopyFile(Pchar(Drive+':\'+sPath+fIndx),
Pchar(SaveDialog1.FileName),true) else
if MessageDlg('Un file con questo nome esiste giá
sovrascrivere?',mtConfirmation,
[MBYES,MBCANCEL],0)=MRYES  then
CopyFile(Pchar(Drive+':\'+sPath+fIndx),
Pchar(SaveDialog1.FileName),false);
end;
end;
end;
procedure TForm1.BitBtn11Click(Sender: TObject);
begin
if Foto.ItemIndex>-1 then
ShellExecute(HANDLE,'open',Pchar(Drive+':\'+sPath+Foto.Items[Foto.ItemIndex]
),
nil,nil,SW_SHOW) else
MessageDlg('Nessun file selezionato',mtError,[MBOK],0)
end;
procedure TForm1.BitBtn12Click(Sender: TObject);
begin
if Audio.ItemIndex>-1 then
ShellExecute(HANDLE,'open',Pchar(Drive+':\'+sPath+Audio.Items[Audio.ItemInde
x]),
nil,nil,SW_SHOW) else
MessageDlg('Nessun file selezionato',mtError,[MBOK],0)
end;
procedure TForm1.BitBtn13Click(Sender: TObject);
begin
if Video.ItemIndex>-1 then
ShellExecute(HANDLE,'open',Pchar(Drive+':\'+sPath+Video.Items[Video.ItemInde
x]),
nil,nil,SW_SHOW) else
MessageDlg('Nessun file selezionato',mtError,[MBOK],0);
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
if Audio.ItemIndex>-1 then
PlaySound(Pchar(Drive+':\'+sPath+Audio.Items[Audio.ItemIndex]),SND_ASYNC,0)
else
MessageDlg('Nessun file selezionato',mtError,[MBOK],0)
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if Foto.ItemIndex>-1 then
FormFoto(Drive+':\'+sPath+Foto.Items[Foto.ItemIndex])
else MessageDlg('Nessun file selezionato',mtError,[MBOK],0);
end;
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
if Video.ItemIndex>-1 then begin
Media1.Close;
Media1.FileName:=Drive+':\'+sPath+Video.Items[Video.ItemIndex];
Media1.Open;
Media1.Play;
end
else MessageDlg('Nessun file selezionato',mtError,[MBOK],0)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BitBtn1.Click;
end;
end.

Ti posto tutta la unit. [...]
avresti fatto meglio a postare solo la parte che
interessa l'apertura dei file ... :|
anche perchè un codice del genere senza indentramenti e
commenti è totalmente cestinabile ... almeno io non ci
capisto un bel niente.
Quindi o riduci il codice e lo rendi più leggibile, o
mi posti il sorgente via mail ;).
Mi sa che la mia mail la hai, no?
	Ciao
	MassimoB
 

 Mi sa che la mia mail la hai, no?
Si la ho fammi sapere se ti é arrivata.
ciao
erik