Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komplette Partition C: (https://www.delphipraxis.net/72637-komplette-partition-c.html)

I.A. 4. Jul 2006 13:52


Komplette Partition C:
 
Hallo

Wenn ich in den Filter des open dialogs den Filter für ".wav;.wma;" gemacht habe durchsucht es dann
die ganze Partition C ????
Ich habe bei open nur dateien aus der Partition C stehen.
Habe also alles schon gemacht will nur wissen ob es die ganze Partition C durchsucht auch in den Ordner.

Hoffentlich habt ihrs kapiert wie ich das meine :gruebel:

Christian Seehase 4. Jul 2006 13:55

Re: Komplette Partition C:
 
Moin I.A.,

der Filter bezieht sich immer auf das Verzeichnis, auf den der Dialog gerade verweist.

I.A. 4. Jul 2006 13:58

Re: Komplette Partition C:
 
Also dursucht er die ganze Partition ???

Christian Seehase 4. Jul 2006 14:03

Re: Komplette Partition C:
 
Moin I.A.

nein, wie kommst Du da drauf? :gruebel:

I.A. 4. Jul 2006 14:05

Re: Komplette Partition C:
 
Weil ich es will das er die ganze Partition nach dieser Dateiendung absucht. :wall:

Smeivel 4. Jul 2006 14:06

Re: Komplette Partition C:
 
Also ich hatte auch das Problem das er immer nur die Dateien fand die direkt in C:\ gespeichert waren also hab ich mal geguckt und diese Procedure gefunden klappt bestens, um dir alle Dateien in einem Verzeichnis anzeigen zu lassen, auch die in den Unterordnern:
Delphi-Quellcode:
  public
     procedure GetFiles(const Path: string);
   { Public-Deklarationen }


procedure TForm1.GetFiles(const Path: string);
var
  SearchRec: TSearchRec;
  p: string;

begin
     Label1.Caption:='';
     p := path + '*.*';
     if FindFirst(p, faAnyFile, SearchRec) = 0 then
     begin
      repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
           GetFiles(Path + SearchRec.Name + '\');
           end
        else begin
        Form1.Memo1.Lines.Add(Path + SearchRec.Name);
        a:=a+1;
        Refresh;
        Application.ProcessMessages;
        ProgressBar1.StepIt;
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
     end;
     ProgressBar1.Position:=0;
     Label1.Caption:=IntToStr(a) +' Dateien gescannt';
end;
Viel Spaß damit und Grüße aus Niederelsungen!

I.A. 4. Jul 2006 14:12

Re: Komplette Partition C:
 
Ja könnte gehen aber bei mir funktioniert des mit dem net(besser gesagt ich blicks net weil ich anfänger bin):

Delphi-Quellcode:
procedure TForm1.GetFiles(const Path: string);
da brauch ich doch so ein GetFile oder ??

wie :

Delphi-Quellcode:
procedure TForm1.ClickButton1();
da brauch ich ja den Button dazu. :gruebel:

Smeivel 4. Jul 2006 14:19

Re: Komplette Partition C:
 
Nein also du musst einfach in den OnClick Befehl von dem Button oder den CanClose Befehl von dem OpenDialog dass hier einfügen
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Form1.GetFiles('C:\');
end;

I.A. 4. Jul 2006 14:23

Re: Komplette Partition C:
 
Aha und das:
Delphi-Quellcode:
public
     procedure GetFiles(const Path: string);
   { Public-Deklarationen } 


procedure TForm1.GetFiles(const Path: string);
var
  SearchRec: TSearchRec;
  p: string;

begin
     Label1.Caption:='';
     p := path + '*.*';
     if FindFirst(p, faAnyFile, SearchRec) = 0 then
     begin
      repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
           GetFiles(Path + SearchRec.Name + '\');
           end
        else begin
        Form1.Memo1.Lines.Add(Path + SearchRec.Name);
        a:=a+1;
        Refresh;
        Application.ProcessMessages;
        ProgressBar1.StepIt;
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
     end;
     ProgressBar1.Position:=0;
     Label1.Caption:=IntToStr(a) +' Dateien gescannt';
end;
brauche ich nicht mehr ????

Smeivel 4. Jul 2006 14:29

Re: Komplette Partition C:
 
Doch du musst dass dann ungefähr so verwenden:
Delphi-Quellcode:
unit MyPad1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, FileCtrl, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
 
   
    procedure ....................;
    procedure ....................;
    procedure ....................;

  private

   { Private-Deklarationen }
  public
     procedure GetFiles(const Path: string);
   { Public-Deklarationen }

  end;

var
  Form1: TForm1;
  Weiter:Boolean;
  a:integer;
implementation

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
a:=0;
Memo1.Clear;
Form1.GetFiles('C:\');
end;

procedure TForm1.GetFiles(const Path: string);
var
  SearchRec: TSearchRec;
  p: string;

begin
     Label1.Caption:='';
     p := path + '*.*';
     if FindFirst(p, faAnyFile, SearchRec) = 0 then
     begin
      repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
           GetFiles(Path + SearchRec.Name + '\');
           end
        else begin
        Form1.Memo1.Lines.Add(Path + SearchRec.Name);
        a:=a+1;
        Refresh;
        Application.ProcessMessages;
        ProgressBar1.StepIt;
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
     end;
     ProgressBar1.Position:=0;
     Label1.Caption:=IntToStr(a) +' Dateien gescannt';
end;
end.
sogar gestestet!

I.A. 4. Jul 2006 14:37

Re: Komplette Partition C:
 
Ok werd ich mal versuchen :mrgreen:

bis jetzt hat so was noch nie bei mir geklappt
des ging au net:
Delphi-Quellcode:
function GetWinVersion: string;
begin
  result:='Unbekannte Version';
  case Win32Platform of
    1:// 9x-Reihe
      If Win32MajorVersion=4 Then Begin
        Case Win32MajorVersion of
            0: result:='Windows 95';
            10: result:='Windows 98';
            90: result:='Windows Me';
        end;
      end;
  2: // NT-Reihe
     Case Win32MajorVersion of
         3:IF Win32MinorVersion=51 then
              result:='Windows NT 3.51';
         4:If Win32MinorVersion=0 then
             result:='Windows NT 4';
         5:Case Win32MinorVersion of
              0: result:='Windows 2000';
              1: result:='Windows XP';
              2: result:='Windows .NET Server';
           end;
     End;
  end;
  //Win32CSDVersion enthält Informationen zu Servicepacks
  if Win32CSDVersion<>'' then
    result:=result+' '+Win32CSDVersion;
end;
da war immer das Get Windows rot.


naja ich werds mal versuchen.

Smeivel 4. Jul 2006 14:44

Re: Komplette Partition C:
 
Das solltest du in einem eigenen Thread behandeln da atimmt noch nicht einmal die erste Zeile:
Delphi-Quellcode:
function GetWinVersion: string;

gmc616 4. Jul 2006 14:53

Re: Komplette Partition C:
 
Was soll daran falsch sein? :gruebel:

Irgendwie habe ich das gefühl das I.A. gern die Deklaration der Funktionen und Proceduren vergisst, bzw. fehlende Units einzubinden.

Verleicht sollte er sich mal das Einsteiger-Tutorial der Schweizer anschauen.

I.A. 4. Jul 2006 17:37

Re: Komplette Partition C:
 
Ich habe einfach den Delphi Code von

http://www.dsdt.info/news/ds/

dsdt.info

kopiert

Smeivel 4. Jul 2006 17:55

Re: Komplette Partition C:
 
Oh ja tut mir leid Denkfehler von mir dachte bei Funktionen kommen auch klammern drum hats denn mit meinem Quelltext funktioniert?

I.A. 4. Jul 2006 18:14

Re: Komplette Partition C:
 
So habe ich das von dir kopiert und eingesetzt aber da ist immer noch Puplic und GetFiles rot unterstrichen.

Delphi-Quellcode:
public
     procedure GetFiles(const Path: string);
   { Public-Deklarationen }


procedure TForm1.GetFiles(const Path: string);
var
  SearchRec: TSearchRec;
  p: string;

begin
     Label1.Caption:='';
     p := path + '*.*';
     if FindFirst(p, faAnyFile, SearchRec) = 0 then
     begin
      repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
           GetFiles(Path + SearchRec.Name + '\');
           end
        else begin
        Form1.Memo1.Lines.Add(Path + SearchRec.Name);
        a:=a+1;
        Refresh;
        Application.ProcessMessages;
        ProgressBar1.StepIt;
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
     end;
     ProgressBar1.Position:=0;
     Label1.Caption:=IntToStr(a) +' Dateien gescannt';
Das war deins jetzt gebe ich den Komletten Code so wie er bei mir da steht :
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, ComCtrls;

type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    Memo1: TMemo;
    SaveDialog1: TSaveDialog;
    FileListBox1: TFileListBox;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FileListBox1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  a:integer;

implementation

{$R *.dfm}

procedure TForm1.FileListBox1Change(Sender: TObject);
begin
FileListBox1.ApplyFilePath('C:\');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
savedialog1.Execute;
memo1.Lines.savetofile(savedialog1.filename+ '.mp3');
end;

public
     procedure GetFiles(const Path: string);
   { Public-Deklarationen }


procedure TForm1.GetFiles(const Path: string);
var
  SearchRec: TSearchRec;
  p: string;

begin
     Label1.Caption:='';
     p := path + '*.*';
     if FindFirst(p, faAnyFile, SearchRec) = 0 then
     begin
      repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
           GetFiles(Path + SearchRec.Name + '\');
           end
        else begin
        Form1.Memo1.Lines.Add(Path + SearchRec.Name);
        a:=a+1;
        Refresh;
        Application.ProcessMessages;
        ProgressBar1.StepIt;
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
     end;
     ProgressBar1.Position:=0;
     Label1.Caption:=IntToStr(a) +' Dateien gescannt';
end;

end;

end.

Smeivel 4. Jul 2006 18:27

Re: Komplette Partition C:
 
Also du musst dir nochmal genauer anschauen wie das mit den privaten prozeduren läuft, es sollte nämlich eigentlich so bei dir aussehen, wie ich dass in meinem Beitrag #10 bereits gepostet habe nimm dass mal dass muss funktionieren habs selber getestet! Kann dir jetzt leider keinen Link zu dem Thread schicken wo private prozeduren genauer beschrieben werden

I.A. 4. Jul 2006 18:42

Re: Komplette Partition C:
 
Ja der funktioniert bei mir fast aber da hast du das gemacht :
Delphi-Quellcode:
procedure ....................;
procedure ....................;
procedure ....................;
die ersten 2 proceduren hab ich schon nämlich :
Delphi-Quellcode:
procedure BitBtn2Click(Sender: TObject);
procedure GetFiles(const Path: string;
procedure ;
aber die dritte procedure find ich nicht.

xZise 4. Jul 2006 19:18

Re: Komplette Partition C:
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, ComCtrls;

type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    Memo1: TMemo;
    SaveDialog1: TSaveDialog;
    FileListBox1: TFileListBox;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FileListBox1Change(Sender: TObject);
  public
    procedure GetFiles(const Path: string);
  end;

{...}
So sollte der Kopf aussehen ^^

Und dann die Erklärung:
Delphi-Quellcode:
unit {Unitname};

interface

uses
  {Benötigte/Imporitiere Dateien (mist :( Mir fällt das Wort dafür gerad nich ein :()};

type //Klasse
  {Name} = class({Elternklasse})
    {Funktionen/Prozedurendeklarationen // Setzen d. Variablen}
  end;
Aso:
Du kannst nicht irgendwoe im Code "procedure GetFiles(const Path: string);" reinschreiben, sonder das MUSS immer vor implentation ;)

Smeivel 4. Jul 2006 19:24

Re: Komplette Partition C:
 
Nein tut mir Leid du hast das Falsch verstanden das sollte keine Anzahl darstellen sondern einfach nur ein Platzhalter sein für deine anderen Prozeduren hast das so richtig gemacht. Was willst du überhaupt mit deinem Programm erreichen? bzw. was macht es?

I.A. 4. Jul 2006 20:51

Re: Komplette Partition C:
 
Naja es soll ersmal alle .wav und alle .wma dateien auf der Festplatte in einer Listbox anzeigen und dann nacher in MP3 umwandeln.
Halt ohne zu komprimieren.

Smeivel 5. Jul 2006 00:13

Re: Komplette Partition C:
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also wenn du einfach nur umbennen meinst hättest du das auch gleich sagen können hab da nämlich was fertig unten findest du die MyChanger.exe ist vollkommen variabel da du ja den Quelltext hast aber bitte damit keine personen verarschen, ich hab erfahrung damit. Ich übernehme keine Haftung für deine Daten will ich noch hinzufügen. Das Programm funktioniert zwar einwandfrei aber mann weiß ja nie! Schrieb bitte obs das richtige war!!!
Delphi-Quellcode:
unit MyPad1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, FileCtrl, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
   BitBtn2: TBitBtn;
    DriveComboBox1: TDriveComboBox;
    DirectoryListBox1: TDirectoryListBox;
    Edit1: TEdit;
    BitBtn3: TBitBtn;
    ProgressBar1: TProgressBar;
    Panel1: TPanel;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Panel3: TPanel;
    Panel4: TPanel;
    Label3: TLabel;
   procedure DriveComboBox1Change(Sender: TObject);
   procedure BitBtn2Click(Sender: TObject);
    procedure DirectoryListBox1Change(Sender: TObject);

   procedure BitBtn3Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
   


  private

   { Private-Deklarationen }
  public
     procedure GetFiles(const Path: string);
   { Public-Deklarationen }

  end;

var
  Form1: TForm1;
  Weiter:Boolean;
  a:integer;
implementation

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
a:=0;
Memo1.Clear;
Form1.GetFiles(DirectoryListbox1.Directory+'\');
end;

procedure TForm1.GetFiles(const Path: string);
var
  SearchRec: TSearchRec;
  p: string;

begin
     Label1.Caption:='';
     p := path + '*.*';
     if FindFirst(p, faAnyFile, SearchRec) = 0 then
     begin
      repeat
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
           GetFiles(Path + SearchRec.Name + '\');
           end
        else begin
        Form1.Memo1.Lines.Add(Path + SearchRec.Name);
        a:=a+1;
        Refresh;
        Application.ProcessMessages;
        ProgressBar1.StepIt;
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
     end;
     ProgressBar1.Position:=0;
     Label1.Caption:=IntToStr(a) +' Dateien gescannt';
end;

procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
   DirectoryListbox1.Drive:=DriveComboBox1.Drive;
end;

procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
   Edit1.Text:=DirectoryListbox1.Directory;
   DirectoryListbox1.DirLabel.Hint:=DirectoryListbox1.Directory;
   DirectoryListbox1.Hint:=DirectoryListbox1.Directory;
end;


procedure TForm1.BitBtn3Click(Sender: TObject);
var
i:integer;
begin
if Memo1.Lines.Count>0 then begin
   if MessageDlg('Wirklich umbennen?',mtwarning,[mbOK,mbCancel],0)=mrOk then begin
   ProgressBar1.Max:=Memo1.Lines.Count;
      for i:=0 to Memo1.Lines.Count-1 do begin
         if pos('.wav',Memo1.Lines.Strings[i])<>0 then
         RenameFile(Memo1.Lines.Strings[i],StringReplace(Memo1.Lines.Strings[i],'.wav','.mp3',[rfreplaceall]));
         if pos('.MP3',Memo1.Lines.Strings[i])<>0 then
         RenameFile(Memo1.Lines.Strings[i],StringReplace(Memo1.Lines.Strings[i],'.wma','.mp3',[rfreplaceall]));
         if pos('.avi3',Memo1.Lines.Strings[i])<>0 then
         
                           ProgressBar1.Position:=i;
                           refresh;

      end;
   end;
   ProgressBar1.Position:=0;
end
else MessageDlg('Keine Dateien gescannt!',mtinformation,[mbOk],0);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Memo1.Clear;
a:=0;
Label1.Caption:='';
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Weiter:=true;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
//DirectoryListbox1.Directory:='C:\Dokumente und Einstellungen\Maxl\Desktop\Neuer Ordner';
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=MessageDlg('MyChanger beenden?',mtconfirmation,[mbYes,mbNo],0)=mrYes;
end;
end.

I.A. 5. Jul 2006 19:46

Re: Komplette Partition C:
 
Also ich hatte eigentlich nicht vor jemand zu verarschen.
Des is nur für mein Freund der zu blöd ist die Endung der Datei zu ändern.
Sein Handy nimmt nur MP3 Format an.

I.A. 5. Jul 2006 19:51

Re: Komplette Partition C:
 
Häää :gruebel:
Wie nennt des um ??




Und hast du das aus einer Anwendung oder einer Form gemacht ???
Ich arbeite immer mit Formen weil ich das besser blick.

Puhbaehr 5. Jul 2006 20:44

Re: Komplette Partition C:
 
Ich glaube du lässt mal besser die Finger von dem Ganzen.

Eine WMA-Datei als MP3-Datei umbenennen? Gehts noch? Von dem anderen fange ich gar nicht erst zu reden an...

Sucht im Internet nach Tools für WMA in MP3-Konvertierung. Da werdet ihr garantiert fündig.
Eure/Deine MP3s und WMA in einer Listbox aufzulisten das traue ich, nachdem was ich von dir gesehen hab, sogar dir zu. Aber was danach kommt... Bitte.

www.google.de das ist euer Freund und Helfer. Suchworte --> WMA MP3

Wenn du mit programmieren anfangen möchtest dann such dir bitte was leichteres. Einen Counter z.B. oder eine Digitale Uhr was auch immer.

Gruß

Flare 5. Jul 2006 20:48

Re: Komplette Partition C:
 
Zitat:

Zitat von I.A.
Sein Handy nimmt nur MP3 Format an.

Dann hilft aber auch keine Umbenennung der Endung in .mp3! Dann erkennt das Handy vielleicht diese Datei, wird aber trotzdem nix mit ihr anfangen können :lol: Oder möchtest du das bloß zum transportieren benutzen? Dann kauf dir aber lieber nen USB-Stick...das ist auf lange Zeit gesehen günstiger :mrgreen:


Flare

I.A. 6. Jul 2006 13:06

Re: Komplette Partition C:
 
Ne also ich habe net so weit gedacht das das Handy die auch noch abspielen muss :oops: ganz vergessen.

Aber gibt es kostenlose Tools, die sind ja immer voll teuer.
Für den würde das sich nicht lohnen, sein Handy hat nur 64MB und der ist ein geitzkragen.

Flare 6. Jul 2006 13:14

Re: Komplette Partition C:
 
Man könnte sich auch nen eigenen Mp3-Converter programmieren (mit der lame.dll oder wie die heißt ging das glaube ich) und ich glaube hier in der DP auch schon welche gesehen zu haben, die dann auch kistenlos sind. Warscheinlich kommen diese auch nicht an die kommerziellen heran, aber sie sind kostenlos und für diesem Zweck denke ich mal völlig ausreichend :zwinker:


Flare

Sergej 6. Jul 2006 13:42

Re: Komplette Partition C:
 
Zitat:

Zitat von I.A.
Ne also ich habe net so weit gedacht das das Handy die auch noch abspielen muss :oops: ganz vergessen.

Aber gibt es kostenlose Tools, die sind ja immer voll teuer.
Für den würde das sich nicht lohnen, sein Handy hat nur 64MB und der ist ein geitzkragen.


Na wie wäre es mal mit ein wenig Eigeninitiative? Google ist immer noch dein/euer Freund. Und ob die Dinger was kosten lässt sich auch "relativ" leicht rausfinden :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 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