Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi If Then Problem (https://www.delphipraxis.net/105043-if-then-problem.html)

STS301 15. Dez 2007 10:24

Re: If Then Problem
 
ja ich habe ein englisches Betriebssystem, aber was hat das damit zu tun?

ich weiß, dass ich den Code auch hineinkopieren kann, habe es aber als screenshot eingefügt, damit man weiß, welcher Fehler auftaucht.

hier

Delphi-Quellcode:
unit loeschprogramm;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Button3: TButton;
    Label1: TLabel;
    Edit2: TEdit;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses ShellAPI;

function DeleteFile(const AFile: string): boolean;
var
 sh: SHFileOpStruct;
begin
 ZeroMemory(@sh, sizeof(sh));
 with sh do
   begin
   Wnd := Application.Handle;
   wFunc := fo_Delete;
   pFrom := PChar(AFile +#0);
   fFlags := fof_Silent or fof_NoConfirmation;
   end;
 result := SHFileOperation(sh) = 0;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if (checkbox1.checked) and (checkbox2.checked)
    then begin
       deletefile(edit1.text) ;
       deletefile(edit2.text) ;
  end
else if checkbox1.Checked
    then begin
       deletefile(edit1.text) ;
    end
  else if checkbox2.checked
    then begin
       deletefile(edit2.text) ;
    end;

if (edit1.enabled=true) and (edit1.text='')
    then begin
          Showmessage('Gib bitte einen Pfad an!');
    end;
if (edit2.Enabled=true) and (edit2.text='')
    then begin
      showmessage('Gib bitte einen Pfad an!');
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.checked
then edit1.enabled:=true
else edit1.enabled:=false;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if checkbox2.checked
then edit2.enabled:=true
else edit2.enabled:=false;
end;

end.

thkerkmann 15. Dez 2007 13:25

Re: If Then Problem
 
Hi,

also mal aufgeräumt:

checkbox2 ist angemarkert, aber in edit2 steht nix drin.
Daraus folgt es wird ein deletefile mit eimen leeren string als Filename versucht.

Jetzt soll die Fehlermeldung unterdrückt werden ? :wiejetzt:

Es wäre ja wohl sinnvoller stattdessen zu prüfen, ob gültige Eingabedaten vorliegen,
also ob der Dateiname nicht leer ist und ob die Datei existiert.

Gruss

[Edit] und noch was: es handelt sich hierbei sicherlich nicht um ein IfThen Problem [/Edit]

STS301 15. Dez 2007 18:38

Re: If Then Problem
 
Zitat:

Zitat von thkerkmann
Es wäre ja wohl sinnvoller stattdessen zu prüfen, ob gültige Eingabedaten vorliegen,
also ob der Dateiname nicht leer ist und ob die Datei existiert.

stimmt das wäre noch besser, nur wie stelle ich das an?

du hast schon recht, dass das nicht mehr zum "if then Problem" gehört, aber es ist finde ich zu wenig um einen neuen Thread auzumachen ;)

DeddyH 15. Dez 2007 18:45

Re: If Then Problem
 
Delphi-Quellcode:
function DeleteFile(const AFile: string): boolean;
var
sh: SHFileOpStruct;
begin
  Result := FileExists(AFile);
  if Result then
    begin
      ZeroMemory(@sh, sizeof(sh));
      with sh do
         begin
           Wnd := Application.Handle;
           wFunc := fo_Delete;
           pFrom := PChar(AFile +#0);
           fFlags := fof_Silent or fof_NoConfirmation;
         end;
    result := SHFileOperation(sh) = 0;
  end;
end;
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  edit1.enabled := checkbox1.checked;
end;
Zitat:

Zitat von STS301
Delphi-Quellcode:
if (checkbox1.checked) and (checkbox2.checked)
    then begin
       deletefile(edit1.text) ;
       deletefile(edit2.text) ;
  end
else if checkbox1.Checked
    then begin
       deletefile(edit1.text) ;
    end
  else if checkbox2.checked
    then begin
       deletefile(edit2.text) ;
    end;

Wozu ist denn die 1. Abfrage gedacht?

STS301 15. Dez 2007 18:57

Re: If Then Problem
 
super, jetzt zeigt er die Fehlermeldung nicht mehr an.

Delphi-Quellcode:
edit1.enabled := checkbox1.checked;
das ist eigentlich nur eine kürzere Version aber danke.

stimmt, an der Abfrage muss ich noch arbeiten aber sonnst funktioniert es :firejump:

Progman 15. Dez 2007 19:01

Re: If Then Problem
 
hi, es genügt doch:
Delphi-Quellcode:
  if checkbox1.Checked then deletefile(edit1.text) ;
  if checkbox2.checked then deletefile(edit2.text) ;

DeddyH 15. Dez 2007 19:02

Re: If Then Problem
 
Ja eben, deshalb hatte ich nach dem Sinn gefragt ;)

STS301 15. Dez 2007 19:07

Re: If Then Problem
 
:wall: :wall: :wall: :wall: :wall:

sooo nahh und doch so fern (die programmierung eines einfachen Delphiprogramms mit einfachen Methoden)

:wall: :wall: :wall: :wall: :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Seite 2 von 2     12   

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