Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi SHCopyFile + Ini-File (https://www.delphipraxis.net/4985-shcopyfile-ini-file.html)

TheMiller 19. Mai 2003 16:00


SHCopyFile + Ini-File
 
Hi Leute!

Ich habe eine Frage, die etwas kompliziert zu umschreiben ist. Ich habe ein Programm geschrieben, dass eine HauptForm als layout und eine Form2 als "Optionen" hat. In den Optionen kann man Quell und Ziel verzeichnis eingeben, welche in einer INI gespeichert werden. So - funzt einwandtfrei. Auch der Abruf der Optionen im HauptFrame ist kein Problem. Nur, wie bekomme ich hin, dass die SHCopyFile Funktion einen Wert für den Quell und Zielorder aus der INI File bezieht?? Ich hoffe ihr könnt mir helfen. Bin fast am Verzweifeln...

Danke im Vorraus

Achso, mein Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, inifiles, ShellAPI, ComCtrls, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    ProgressBar1: TProgressBar;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    MainMenu1: TMainMenu;
    Sichern1: TMenuItem;
    Allessichern1: TMenuItem;
    AusgewhlteDatensichern1: TMenuItem;
    Optionen1: TMenuItem;
    ber1: TMenuItem;
    Exit1: TMenuItem;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Aktualisieren1: TMenuItem;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    CheckBox8: TCheckBox;
    CheckBox9: TCheckBox;
    CheckBox10: TCheckBox;
    Label15: TLabel;
    procedure Exit1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AusgewhlteDatensichern1Click(Sender: TObject);
    procedure Optionen1Click(Sender: TObject);
    procedure Aktualisieren1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Allessichern1Click(Sender: TObject);
  private
{ Private-Deklarationen }
  function SHCopyFile(Handle: THandle; szSource, szDestination: TFileName): Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

function TForm1.SHCopyFile(Handle: THandle; szSource, szDestination: TFileName): Boolean;
var
  ShellFileOperation: TSHFileOpStruct;
begin
  Result := True;
  try
    with ShellFileOperation do
    begin
      Wnd := Handle;
      wFunc := FO_COPY;
      pFrom := PChar(szSource);
      pTo := PChar(szDestination);
      // fFlags := FOF_FILESONLY OR FOF_NOCONFIRMMKDIR FOF_SIMPLEPROGRESS;
      fFlags := FOF_NOCONFIRMMKDIR;
      lpszProgressTitle := 'Dateien kopieren ...';
    end;
    SHFileOperation(ShellFileOperation);
  except
    Result := False;
  end;
  end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var ini:TInifile;
begin
ini := TIniFile.Create('C:\Programme\SCC\Settings.ini');
try
  Edit2.Text:=ini.ReadString('Source','1','Text');
  Edit3.Text:=ini.ReadString('Source','2','Text');
  Edit4.Text:=ini.ReadString('Source','3','Text');
  Edit5.Text:=ini.ReadString('Source','4','Text');
  Edit6.Text:=ini.ReadString('Source','5','Text');
  Edit7.Text:=ini.ReadString('Source','6','Text');
  Edit8.Text:=ini.ReadString('Source','7','Text');
  Edit9.Text:=ini.ReadString('Source','8','Text');
  Edit10.Text:=ini.ReadString('Source','9','Text');
  Edit11.Text:=ini.ReadString('Source','10','Text');
  Label3.Caption:=ini.ReadString('AppName','1','Caption');
  Label4.Caption:=ini.ReadString('AppName','2','Caption');
  Label5.Caption:=ini.ReadString('AppName','3','Caption');
  Label6.Caption:=ini.ReadString('AppName','4','Caption');
  Label7.Caption:=ini.ReadString('AppName','5','Caption');
  Label8.Caption:=ini.ReadString('AppName','6','Caption');
  Label9.Caption:=ini.ReadString('AppName','7','Caption');
  Label10.Caption:=ini.ReadString('AppName','8','Caption');
  Label11.Caption:=ini.ReadString('AppName','9','Caption');
  Label12.Caption:=ini.ReadString('AppName','10','Caption');
    finally
  ini.Free;

end;
end;

procedure TForm1.AusgewhlteDatensichern1Click(Sender: TObject);
var filesource, filedest:string;
var ini:TInifile;
begin
ini:=TInifile.Create('C:\Programe\SCC\Settings.ini');
try
IF CheckBox1.Checked THEN fileSource:=ini.ReadString('source','1',Text);
  filedest:=ini.ReadString('Destination','1',Text);
  CopyFile(PChar(fileSource), PChar(fileDest), False);
  finally
  ini.Free;

end;
 end;
procedure TForm1.Optionen1Click(Sender: TObject);
begin
Form1.Visible:=False;
Form2.Visible:=True;
end;

procedure TForm1.Aktualisieren1Click(Sender: TObject);
var ini:TInifile;
begin
ini := TIniFile.Create('C:\Programme\SCC\Settings.ini');
try
  Edit2.Text:=ini.ReadString('Source','1','Text');
  Edit3.Text:=ini.ReadString('Source','2','Text');
  Edit4.Text:=ini.ReadString('Source','3','Text');
  Edit5.Text:=ini.ReadString('Source','4','Text');
  Edit6.Text:=ini.ReadString('Source','5','Text');
  Edit7.Text:=ini.ReadString('Source','6','Text');
  Edit8.Text:=ini.ReadString('Source','7','Text');
  Edit9.Text:=ini.ReadString('Source','8','Text');
  Edit10.Text:=ini.ReadString('Source','9','Text');
  Edit11.Text:=ini.ReadString('Source','10','Text');
  Label3.Caption:=ini.ReadString('AppName','1','Caption');
  Label4.Caption:=ini.ReadString('AppName','2','Caption');
  Label5.Caption:=ini.ReadString('AppName','3','Caption');
  Label6.Caption:=ini.ReadString('AppName','4','Caption');
  Label7.Caption:=ini.ReadString('AppName','5','Caption');
  Label8.Caption:=ini.ReadString('AppName','6','Caption');
  Label9.Caption:=ini.ReadString('AppName','7','Caption');
  Label10.Caption:=ini.ReadString('AppName','8','Caption');
  Label11.Caption:=ini.ReadString('AppName','9','Caption');
  Label12.Caption:=ini.ReadString('AppName','10','Caption');
    finally
  ini.Free;

end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Progressbar1.StepIt;
end;

procedure TForm1.Allessichern1Click(Sender: TObject);
var ini:TInifile;
begin
ini := TIniFile.Create('C:\Programme\SCC\Settings.ini');
try
ini.ReadString
finally
ini.free;
end;
end;

end.

Luckie 19. Mai 2003 16:23

ReadString.

TheMiller 19. Mai 2003 16:27

Ja, grad dann bringt er mir eine Fehlermeldung.
Kannst du mir bitte mal einen Beispiel-Code schreiben (Für einen ordner)??

Luckie 19. Mai 2003 16:29

Was soll ich da groß schreiben? :shock:

Einfach diese Funktion:
Delphi-Quellcode:
function TForm1.SHCopyFile(Handle: THandle; szSource, szDestination: TFileName): Boolean;
var
  ShellFileOperation: TSHFileOpStruct;
begin
  Result := True;
  try
    with ShellFileOperation do
    begin
      Wnd := Handle;
      wFunc := FO_COPY;
      pFrom := PChar(szSource);
      pTo := PChar(szDestination);
      // fFlags := FOF_FILESONLY OR FOF_NOCONFIRMMKDIR FOF_SIMPLEPROGRESS;
      fFlags := FOF_NOCONFIRMMKDIR;
      lpszProgressTitle := 'Dateien kopieren ...';
    end;
    SHFileOperation(ShellFileOperation);
  except
    Result := False;
  end;
end;
Mit dem Quellordner und dem Zielordner aufrufen. Steht doch schon alles da.

TheMiller 19. Mai 2003 18:12

Ja, aber wie sage ich dem Prog, dass er sich den Ziel, Quellordner aus der Ini Laden soll.

Habe ja im normalen Code folgendes:

Delphi-Quellcode:
if SHCopyFile(Handle, 'C:\Windows\*.*', 'D:\Windows.Copy\')...
aber es soll so heißen:

Delphi-Quellcode:
if SHCopyFile(Handle, '[quelleAusIni]', '[ZielAusINI]')
aber das geht net... Wenn irgendeine mir helfen könnte, den fehler zu korrigieren, wäre ich ihm auf immer und ewig dankbar... :-)

APP 19. Mai 2003 18:55

Hallo,
ganz verstehe ich noch nicht genau was Du möchtest, aber
Du liest doch schon Ziel und Quelle aus der INI:

Delphi-Quellcode:
 fileSource:=ini.ReadString('source','1',Text);
 filedest:=ini.ReadString('Destination','1',Text);
Delphi-Quellcode:
if SHCopyFile(Handle, fileSource, filedest)
sollte reichen, oder verstehe ich etwas falsch?

TheMiller 19. Mai 2003 19:00

Hi, ich möchte, dass in dem Koier-Code der Quell und Zielordner aus der INI gelesen wird. In ´Worte sehe das so aus

Kopieren von:[eintrag aus ini lesen) in(eintrag aus ini-lesen)

Hoffe, du verstehst mich


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz