FindFirst soll nur ausfürbare Programm finden bzw. auflisten

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
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)

FindFirst soll nur ausfürbare Programm finden bzw. auflisten

Beitrag von pluto »

Hallo,
wie kann ich nur ausführbare Programme finden mit findfirst oder einer anderen Funktion ?
Ich meine es gab da mal ein Attribut zu oder so. ich habe es mit

Code: Alles auswählen

if FileIsExecutable(FileIterator.FileName) then
  writeln('OK:',FileIterator.FileName);
versucht. Leider werde hier auch Grafik Dateien gefunden. seltsamer weise sind die auch ausführbar für diese Funktion.
In einem Beitrag von einem Thread hatte jemand mal die Möglichkeit gezeigt... aber ich finde diesen Beitrag nicht mehr...

Ich möchte nur Programme auflisten die ich kompeliert habe ! unter Windows währen das .exe Dateien unter Linux haben die leider keine Erweiterung ! also muss es ein anderen Weg geben.
Allerdings sollen Ausführbare Scripte nicht gefunden werden.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

In FileUtil findest du:

CheckIfFileIsExecutable bzw. FileIsExecutable
um zu wissen, ob es ein Script oder ein Kompilat ist, musst du wahrsch. die ersten Bytes einlesen. ('#!/bin/bash ' oder '?ELF' oder ...)

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 »

die habe ich mir auch schon angeschaut und scheint auch nur für Windows zu klappen.
bzw. kommt das gleiche Ergebnis ! es findet auch Grafik Dateien.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Bist du sicher, dass diese Grafik-Dateien nicht fälschlicherweise das Exec Flag gesetzt haben? Schau mal im Dateimanager nach.

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 »

ja das flag wurde gesetzt, aber ich habe jetzt keine lust in allen verzeichnisen nach zu schauen.
Ich erwarte das die funktion es Trozdem richtig ermitteln kann.

Was ist bittschön mit Scripten die sind auch Ausfürbar und sollen nicht gefunden werden.
Ich möchte nur Kompelierte Anwendungen finden bzw auflisten und sonst NIX
im Moment mache ich das so, sobald was keine Endung hat ist es ein Programm.
Aber das ist leider nicht zuverlässig.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Wenn das Flag gesetzt ist, wird es natürlich als ausführbar angezeigt.
Wenn du nur Kompilate Anzeigen willst (warum auch immer) musst du, wie ich oben schon gesagt hatte, den Header einlesen;
http://www.caldera.com/developers/gabi/ ... html#elfid" onclick="window.open(this.href);return false;

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 »

Aber Ausführbar sind auch Scripte !
Ich meine es gab mal ein Flag was ich setzten konnte bei FindFirst. Nur ich weiß nicht mehr welches. Naja dann muss ich das wohl so machen wie du es vorgeschlagen hast.
Ist zwar etwas umständlich aber müsste gehen.

Vielen Dank erstmal
MFG
Michael Springwald

Antworten