![]() |
Prüfen ob string auf '.exe' endet
Hi :-D
folgendes Problem:pale:: Ich möchte einen String aus einem Edit-Feld prüfen, ob er auf '.exe' endet, wenn nicht soll '.exe' angehängt werden. Gibt es irgendwie eine Funktion, mit der man von rechts nach links die Zeichen überprüfen kann, ob diese '.exe' sind? Vielen Dank für eure Antwort |
AW: Prüfen ob string auf '.exe' endet
Delphi-Quellcode:
if AnsiLowerCase(ExtractFileExt(str)) = '.exe' then
|
AW: Prüfen ob string auf '.exe' endet
Einfach aus SysUtils ChangeFileExt die Extension ändern. Wenn die bereits auf .exe lautet, bleibt sie so wie sie ist.
HTH, Poelser |
AW: Prüfen ob string auf '.exe' endet
Zitat:
|
AW: Prüfen ob string auf '.exe' endet
Zitat:
Zitat:
|
AW: Prüfen ob string auf '.exe' endet
Okay hab es. War ein Dummheitsfehler :oops:
Code:
if AnsiLowerCase(ExtractFileExt(s)) <> '.exe' then begin s := s + '.exe'; end; Danke für die Hilfe :thumb: |
AW: Prüfen ob string auf '.exe' endet
Hallo,
mit Pos oder Copy wäre das auch gegangen if Pos('.exe',S)=Length(S)-4 (oder -3 ;) ) if Copy(S,Length(S)-4,4)='.exe' Das Upper darf der TE selber einfügen ... |
AW: Prüfen ob string auf '.exe' endet
Ich würde vorher noch mit lowercase "normieren", denn so, wie es hier angeboten wird, wird z.B. ".EXE" nicht erfaßt, obwohl das eine zulässige Executable-Endung ist.
|
AW: Prüfen ob string auf '.exe' endet
Ich nutze für sowas gern "EndsText()" aus der Unit System.StrUtils.
Wobei sich diese Funktion nur um Strings kümmert - ob das nun ein Dateiname ist, interessiert sie nicht. |
AW: Prüfen ob string auf '.exe' endet
Delphi-Quellcode:
[edit] @Cheffe :lol: [/edit]
uses StrUtils;
... if AnsiEndsText('.exe', s) then ... |
AW: Prüfen ob string auf '.exe' endet
Wenn in XE 2 schon dabei,
Delphi-Quellcode:
aus den StrUtils. Ignoriert von sich aus die Schreibweise.
function EndsText(const ASubText, AText: string): Boolean;
Edit: Die Aktualisierung der Beiträge im Forum könnte etwas schneller sein. |
AW: Prüfen ob string auf '.exe' endet
Zitat:
|
AW: Prüfen ob string auf '.exe' endet
Zitat:
|
AW: Prüfen ob string auf '.exe' endet
Dafür bieten sich Unittests förmlich an:
Delphi-Quellcode:
Wenn man erst mal angefangen hat Tests zu schreiben wird man förmlich süchtig danach :-D
unit Unit30;
interface uses DUnitX.TestFramework; type [TestFixture] TExtensionTests = class(TObject) public [Test] [TestCase('TestA1','test,test.exe')] [TestCase('TestA2','test.,test.exe')] [TestCase('TestA3','test.e,test.exe')] [TestCase('TestA4','test.e.,test.e.exe')] procedure Test1(const Value, res : string); [Test] [TestCase('TestB1','test,test.exe')] [TestCase('TestB2','test.,test.exe')] [TestCase('TestB3','test.e,test.exe')] [TestCase('TestB4','test.e.,test.e.exe')] procedure Test2(const Value, res : string); end; implementation uses Sysutils; const lext = '.exe'; function ChangeExtension(const Value : string; const extension : string) : string; begin result := ChangeFileExt(Value, extension); end; function ChangeExtensionEndsText(const Value : string; const extension : string) : string; begin result := Value; if AnsiLowerCase(ExtractFileExt(result)) <> '.exe' then begin result := result + '.exe'; end; end; procedure TExtensionTests.Test1(const Value, res : string); Var lTestResult : String; begin lTestResult := ChangeExtension(value, lext); assert.AreEqual(res, lTestResult); end; procedure TExtensionTests.Test2(const Value, res : string); Var lTestResult : String; begin lTestResult := ChangeExtensionEndsText(value, lext); assert.AreEqual(res, lTestResult); end; initialization TDUnitX.RegisterTestFixture(TExtensionTests); end. |
AW: Prüfen ob string auf '.exe' endet
Zitat:
|
AW: Prüfen ob string auf '.exe' endet
Zitat:
Aber das Ergebnis spricht für sich.... Das schöne ist, wenn man einmal angefangen hat hilft es echt.... Und in diesem Zusammenhang Danke Stevie für Testinsight |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz