Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String durchsuchen (https://www.delphipraxis.net/14008-string-durchsuchen.html)

Uncle Cracker 30. Dez 2003 18:51


String durchsuchen
 
Ich habe mir folgende Funktion gebastelt, um zu überprüfen, ob eine Datei eine DLL-Datei ist:

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
if(pos('.dll','C:\Test.dll') > 0) then
Label1.Caption:='DLL-Datei' else Label1.Caption:='Keine DLL-Datei'
end;
Klappt auch super, jedoch wenn die Datei Test.DLL heißt, geht es schon wieder nicht :(

Gibt es vielleicht ein kurze Möglichkeit, dass die Groß- und Kleinbuchstaben egal sind, denn ich möchte nicht alle möglichkeiten durch gehen, also dLL, dlL, DlL usw.


:love: Danke UC

toms 30. Dez 2003 18:53

Re: String durchsuchen
 
so:

Delphi-Quellcode:
if (Pos('.DLL',AnsiUpperCase('C:\Test.dll')) > 0) then

Uncle Cracker 30. Dez 2003 18:57

Re: String durchsuchen
 
Ok, hat sich erledigt, habe selbst eine Lösung gefunden:

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
if(pos('.dll',lowercase('C:\Test.Dll')) > 0) then
Label1.Caption:='DLL-Datei' else Label1.Caption:='Keine DLL-Datei'
end;

Christian Seehase 30. Dez 2003 21:16

Re: String durchsuchen
 
Moin UC,

Zitat:

Zitat von Uncle Cracker
habe selbst eine Lösung gefunden:

Jain.
Was machst Du, wenn die Datei .dll im Dateinamen beinhaltet, z.b. Test.dll.exe, oder die Endung länger ist test.dll2?
Schau Dir mal die LastDelimiter an, und nehm dann alles ab dem letzen Punkt im String für den Vergleich.

himitsu 30. Dez 2003 21:23

Re: String durchsuchen
 
Also wenn, dann wenigstens so:
Delphi-Quellcode:
If AnsiUpperCase(ExtractFileExt('C:\Test.Dll')) = '.DLL' Then
  Label1.Caption := 'DLL-Datei' Else Label1.Caption := 'Keine DLL-Datei';

Luckie 30. Dez 2003 22:17

Re: String durchsuchen
 
Wer sagt, dass eine DLL auch die Endung DLL haben muss? Bei Assarbad www.assarbad.org gibt es ein Programm mit Source, um zu bestimmen ob eine datei ein gültiges PE32 Format hat. Ähnliches sollte sich auch mit DLL's machen lassen.

Uncle Cracker 30. Dez 2003 22:28

Re: String durchsuchen
 
Ich habe mir mal das Programm von Assarbad angeguckt, konnte nix finden, was mir weiter helfen könnte.

Eigentlich auch logisch? Denn eine Dll ist doch auch nur eine gültiges PE32 Format, oder irre ich mich da jetzt :roll:

Luckie 30. Dez 2003 22:33

Re: String durchsuchen
 
Also ich würde länger als 10 Minuten brauchen, um zu verstehen, was er da macht und vor allem wie.

Uncle Cracker 30. Dez 2003 23:36

Re: String durchsuchen
 
Ich habe mich jetzt mal ein bisschen rangesetzt und eine schöne kleine Funktion geschrieben, die überprüft ob die eingegeben Datei eine DLL-Datei ist, egal wie die geschrieben ist:


Delphi-Quellcode:
function isDll(Dateiname: string): Boolean;
var
  i : Integer;
  s : String;
begin
  if(pos('.',Dateiname) > 0) then
    begin
      i := length(Dateiname);
      while(Dateiname[i] <> '.') do dec(i);
      s := lowercase(copy(Dateiname,i,99));
      if length(s)=4 then
        begin
          if(pos('.dll',s) > 0) then
            Result := true
          else Result := false
        end else Result := false
     end
  else
    Result := false
end;
Auch wenn der der Dateiname .exe.dll oder dll.exe heißt, kommt man zum richtigen Ergebnis.
Ist sicher ein bisschen umständlich programmiert, aber es läuft :mrgreen:

Christian Seehase 31. Dez 2003 12:14

Re: String durchsuchen
 
Moin UC,

zum einen ist Himitsus Variante doch auch gut, zum anderen kann ich mich des Eindruckes nicht erwehren, dass Du Dir LastDelimiter nicht wirklich angeschaut hast ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.
Seite 1 von 2  1 2      

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