Funktionen und Proceduren für den Datei zugreiff

Zur Vorstellung von Komponenten und Units für Lazarus
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Funktionen und Proceduren für den Datei zugreiff

Beitrag von pluto »

Hallo,
ich habe einige nützliche sachen für den zugrief auf das Dateisystem, hier ist eine Übersicht:

Code: Alles auswählen

// Startet eine anwendung
//  procedure RunApp(f:TFileName;param:string;handle:hwnd);
  // Splitet einen Dateipfad in zwei hälften
  function ExtractFilePfad1(Pfad:String):String;
 
  // Prüft ob es die erweiterung schon im Dateiname gibt, wenn ja wird nur der dateinamen
  // Zurück geben, wenn nicht: Dateiname + Erweiterung
  function AddExt(FileName:TFileName; Ext:String):String;
 
  // Erstelle eine leer Datei
  procedure CreateFile1(FileName:TFileName);
  // Löscht gefüllt verzeichnise
//  function Deltree(dir: string): Boolean;
 
//  function ReadDir(Path, Mask:string; ShowPath: boolean; mitExt,mitData:Boolean): TStringlist;
  // Liefrt das exe verzeichnis
  function GetExeDir(isS:Boolean = False):String;
 
  // Wenn exedir vorkommt wird es durch das exedir verzeichnis ersetzt
  function GetDir(dir:string):string;
 
  // gibt Datei infos zurück
//  function GetFileInfo(FileName,ch:String):String;
 
  // Schaut in der ExtList nach ob, es sich um eine erlaubte Dateiendung handelt oder nicht
  function FileNameInTheList(FileName, extList:String):boolean;
 
  // Liefert alle verzeichnise einschließnd unterverzeichnise eines verzeichnis
  procedure GetAllFiles(Path, ExtMask: String; List: TStrings;SubFolder: Boolean);
 
  //  Liefert die genaue datei größe als Bytes
  function GetFileSize1(const AFileName: String): INT64;
 
  // Prüft ob in bestimmtens zeichem im im Dateinamen vorhanden ist
  function IsChar(const AFilename: string; ch: string): String; overload;
 
  // Prüft ob in bestimmtens zeichem im im Dateinamen vorhanden ist
  function IsChar(const AFilename: string; ch: char): String; overload;
 
  // Prüft ob in den Dateinamen ein ein \ ist und wenn nicht, fügt er es hinzu
  function CheckBackSlash(const AFilename: String): String;
 
  // List ein verzeichnis in eine TStringList und pack einige Daten hinzu(nach wunsch)
//  function GetFileSizeDir(Path, Mask:string; ShowPath: boolean; isdata:Boolean): TStringlist;
 
  // Gibt einen folgendes zurück(als beispiel: 18 KB
  function FormatFileSize(Size: INT64): string;
  // Ließt einen String aus einer ini datei
  function  ReadIni(FileName,Sektion,ident,fehler:String) :String;
 
  // Schreibt einen String in eine Ini Datei
  procedure WriteIni(FileName,Sektion,ident,WriteText:String);
 
  // prüft ob es eine bestimmte ini Sektion schon gibt oder nicht
  function isIniSek(FileName:TFileName; Sek:String):boolean;
 
  // Löscht alle dateien im verzeichnis
//  procedure DeleteFiles(directory: string);
 
  // Löscht eine Datei
  function DelFile(FileName:String):Boolean;
 
  // Wandelt eine BMP zu einer Jpeg um
//  procedure BmpToJpeg(const Filename: String);
 
  // Schießt ein Bild vom Aktivien fenster
//  function FormularSaveScreenShot(FileName: String; h : hWnd): Boolean;
  // Schneidet aus dir da was in dir1 und dir2 steht ab
  function ChagenDir(dir,dir1,dir2,char:String):String;
  // Ersetzt das angeben zeichen durch die angeben verzeichnise
  function ReplaceDir(dir, chr,newDir,newDir1:String):String;
  // Past den FileName ob da z.b. eine Klammer auf steht
  function PasteFileName(FileName:TFileName):String;
  // List aus der aktellen datei die icon eigenschaft aus(offentlich)
  // Gibt ein Realtiv verzeichnis zurück
  function GetRealtiv(dir1,dir2:String):String;
  // Prüft einen Dateinamen auf gültigkeit
//  function IsFileName(FileName: String): Boolean;
  function RandomID(fileName:TFileName; c:Integer):String;
  function RandomID2(count:Integer):string;
  // gibt zurück ob sich bestimmter eintrag im verzeichnis befindet
  function GetAnderDir(dir,mask:String;attri:Integer):boolean;
  // gibt mir die letzte verzeichnise ebene zurück(C:\test1\test1 = test1)
  function GetPrvDir(dir:String):String;
  // macht aus C:\verzeichnis1\verzeichnis2 c:\verzeichnis1\
  function GetPrvDir1(dir:String):String;
//  function GetFilesInDirectory(Directory: String; const Mask: String):boolean;
  function GetFilesInDirectory(ADirectory: string; AMask: String; ARekursiv: Boolean;notMask:String = ''):Boolean;
  // Gibt zurück ob sich einträge aus der angeben liste in einem verzeichnis befindet
//  function GetAnderItem(dir:String;extList:String):Boolean;
//  function IstErweiterungImOrdner(Pfad, Erweiterung: String): Boolean;
//  function FileCount(const dir, masks: String): Integer;


und im Anhang gibt es die Unit zum Downloaden
Dateianhänge
Tools_File.pas
(20.99 KiB) 104-mal heruntergeladen
MFG
Michael Springwald

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Wie unterscheiden sich diese Funktionen von ähnlichen, die man in LCL, Delphi VCL oder Jedi JCL findet ?

Nichts gegen Deine Initiative solche Funktionen zur Verfürgung zu stellen, aber irgendwo 'rumliegenden Tool sind im Fall des Falles schwer zu finden. Schön wäre eine "Datenbank" zu haben wo man sie anhand von Keywords finden kann. Hier könnten eigene "Deutsches-Lazarus-Forum" Tools, weniger bekannte LCL-Funktionen, Jedi Tools und anderes aufgenommen werden. Wer was findet und testet Kann es mit Keywords, Testergebnis und Quelle eintragen. Forum-Admin: Kann man so etwas hinbekommen ?

-Michael
Zuletzt geändert von mschnell am Fr 30. Mär 2007, 15:45, insgesamt 1-mal geändert.

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

Beitrag von pluto »

ich stimmte dir zu, allerdings habe ich solche Funktionen in Delphi oder Lazarus noch nicht gesehen, das gilt auch für die anderen units.

Ich habe sie geschrieben, weil ich nichts vergleichbares gefunden habe. Und die Jedi JCL gibt es leider noch nicht für Lazarus oder sehe ich das jetzt Falsch ?

die Idee mit der Datenbank währe toll. aber dann müssen auch Teilstrings zugelassen werden und nicht so wie hier im Forum nur ganze String. sonst ist die Idee toll. wobei montana hat ja schon sowas Erstelt mit pastoDoc.
MFG
Michael Springwald

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

z.B. ExtractFilePath gibt es, was Deine Funktion mit "...l" macht wäre interessant zu wissen.

GetExedir ist vermutlich ExtreactFilePath(Application.Exename) oder so ähnlich.

Die Jedi Code Library behauptet, Free Pascal - kompatibel zu sein.

-Michael

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

Beitrag von pluto »

könntest du etwas genau sein ?
die Funktionen sind nur für mich geschrieben.
Und erfühllen ihren zweck. Aber jeder kann sie gerne anpassen.

Ich nehme auch gerne ernte Verbesserung-Vorschläge an. Aber dann müssen sie genau sein.
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

mschnell hat geschrieben:Schön wäre eine "Datenbank" zu haben wo man sie anhand von Keywords finden kann. Hier könnten eigene "Deutsches-Lazarus-Forum" Tools, weniger bekannte LCL-Funktionen, Jedi Tools und anderes aufgenommen werden. Wer was findet und testet Kann es mit Keywords, Testergebnis und Quelle eintragen. Forum-Admin: Kann man so etwas hinbekommen ?

Ja, lässt sich sicher machen.
Wäre dafür nicht die WissensDB angebracht, mit entsprechenden Sparten, oderwie dachtets du es dir?

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 »

eine Funktionsdatenbank meinte er Siuchbegriff rein passende funktion raus.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von pluto »

ja warum nicht... unter dann gleich mehrer Sparten:
- Funktionen und Proceduren
- Klassen und Records(Datentypen)
- Konstanten - am besten mit Beschreibung wo für sie eingesetzt werden.
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Christian hat geschrieben:eine Funktionsdatenbank meinte er Siuchbegriff rein passende funktion raus.

Das ist doch letztlich die WissensDB, da gibts ja auch Volltextsuche.

Wie solls denn genau sein?
Offline, oder Online? Eigene Oberfläche, oder integriert?...
Ich kann aber auch was spezielles aufsetzen, wenn ihr eure Wünsche etwas genauer gestaltet ;).

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

Beitrag von pluto »

am besten beides(offline und online).
ich stelle mir das so vor:
eine einfache seite wo Links die Funktionen und Proceduren stehen und Rechts die Parameter liste und evlt. noch eine Kurzt Beschreibung mit beispiel.
also eine art Tabelle.
MFG
Michael Springwald

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 »

Hä das soll doch keine Hilfe werden, dafür kannst auch in die Hilfe gucken.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von pluto »

im Moment ist die Hilfe ja auch nichts weiter als ein Index.

ich finde sowas wie hier:
http://www.dsdt.info/referenz/
ganz Praktisch und ich würde es toll finden hier auch sowas vorzufinden oder was ähnliches .

edit:
am besten noch das auch gleich die Parameter auf einen blick gesehen werden können
also eine Tabelle mit drei spalten
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Andere Meinugnen dazu?

gehst es wenn, nicht eher um soetwas: http://www.dsdt.info/tipps/

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 »

Ja, für alles andere ist die Hilfe da.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von pluto »

nein. das gibt es ja es bereits sehr oft und so stark unterscheidet sich Lazarus von Delphi ja doch nicht... im Moment. Mir geht es letztendlich nur um eine Übersicht mit allen Anweisungen die es in Lazarus gibt mit einer kurtzt Beschreibung

und Christian was du mit deiner Hilfe meinst weiß ich auch nicht. eine Tolle Hilfe ist das z.z. Du kannst gerne noch Öfter drauf verweisen. Das es eine gibt. aber leider nicht zu gebrauchen.
MFG
Michael Springwald

Antworten