Ordner löschen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Ordner löschen

Beitrag von Targion »

Hallo!
Ich habe nur eine ganz simple Frage: Wie lautet der Befehl, um das Lazarus-Programm unter Linux einen Ordner löschen zu lassen?
Das war's auch schon. Im Internet habe ich dazu nichts wirklich sinnvolles gefunden.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Code: Alles auswählen

procedure RmDir ( const DirectoryName  : string ) ;
{ oder }
function RemoveDir ( const Dir  : string ) : Boolean;
Sollte eigentlich helfen. Bei solchen Dingen bist du gut beraten, wenn du auf

http://www.delphibasics.co.uk" onclick="window.open(this.href);return false; nachsiehst.

Im konkreten Fall ist es diese URL:
http://www.delphibasics.co.uk/RTL.asp?Name=RmDir" onclick="window.open(this.href);return false;

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Hmm. Beide Befehle funktionieren nicht, beim Ersten bekomme ich die Fehlermeldung "Project raised exception class "RunError(5)", der zweite bringt auch keinen Erfolg. Das Programm hat Schreibrechte auf den Ordner.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Sonderbar, ich habe es hier gerade zuhause mit WinXP Home unter Lazarus 0.9.24 ausprobiert und es funktioniert:

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  { Test-Verzeichnis erstellen }
  CreateDir('C:\test');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  { Test-Verzeichnis wieder löschen }
  RemoveDir('C:\test');
end;
 
initialization
  {$I unit1.lrs}
 
end.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

So, das Gleiche hat auch unter Linux wunderbar funktioniert:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateDir('/home/bembulak/test');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  RemoveDir('/home/bembulak/test');
end;
Bist du sicher, dass du rw-Rechte hast?

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

http://www.freepascal.org/docs-html/rtl ... vedir.html" onclick="window.open(this.href);return false;

Ordner nicht leer?

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich glaube das Klappt nur wenn das Verrzeichnis Leer ist.
Such dir eine FindFirst mehtode die auch unterverzeichniss durch sucht
und lösche jeden Gefunde Datei.

evlt. klappt dieser tipp auch unter Lazarus:
http://www.dsdt.info/tipps/?id=68" onclick="window.open(this.href);return false;
oder hier:
http://www.swissdelphicenter.ch/de/showcode.php?id=152" onclick="window.open(this.href);return false;
oder aber auch hier:
http://www.swissdelphicenter.ch/de/showcode.php?id=415" onclick="window.open(this.href);return false;

aber alle nutzten WinApi Funktionen, und ich weiß nicht ob es die Unter Lazarus auch gibt.... Wenn nicht müssten wir eine eigene Lösch procedure schreiben die auch gefüllte Verzeichnisse löschen kann.
MFG
Michael Springwald

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Ja, das geht so nicht... Das Verzeichnis ist gefüllt mit dateien und weiteren Ordnern. Wie schreibe ich eine Lösch-prozedur? Gibt es da linuxAPI-Befehle?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Musst du nicht schreiben, gibts in FileUtil glaub CleanDir hieß die.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Ja! So kann man den Ordner löschen:

Code: Alles auswählen

uses FileUtil;
[...]
DeleteDirectory('/tmp/xyz',false);
Vielen Dank!

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Cool!
Wie bist du jetzt auf den Befehl gekommen? Ich hab' im Wiki gesucht, aber leider nix finden können.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Bin ich irgendwann mal drüber gestolpert. Da sind auch noch andere schöne Sachen drin AppendPathDelim z.b.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten