![]() |
Dateinamenerweiterung wenn Datei vorhande
Hallo,
ich habe folgendes Problem. Mein Programm legt Prüfzeugnisse ab mit dem Namen der Seriennummer. Beispiel: 11-22-33-44.pdf Jetzt kommte es vor, dass ein Gerät zweimal geprüft werden muss (Reparatur) dann ist diese Datei schonvorhanden und würde im schlechtesten Fall überschrieben werden. Das will ich umgehen, in dem ich wenn die Datei vorhanden ist eine Dateinamenerweiterung hinten dran hänge.. Beispiel: 11-22-33-44.pdf schon vorhanden 11-22-33-44_1.pdf nicht vorhanden also abspeichern.. Beispiel: 11-22-33-44.pdf schon vorhanden 11-22-33-44_1.pdf schon vorhanden 11-22-33-44_2.pdf nicht vorhanden also abspeichern.. Wie kann ich soetwas am besten (in einer Schleife) abbilden? Gut über FileExist bekomme ich heraus ob die Datei vorhanden ist, aber wie gehe ich dann weiter vor... Vielleicht denke ich an der Stelle auch zu kompliziert :-) Hoffe ihr könnt mich ein wenig inspirieren Danke Gruß DelphiManiac |
Re: Dateinamenerweiterung wenn Datei vorhande
Na, wie würdest du es denn von Hand machen? Du siehst im Speichern-Unter-Dialog, dass die Datei schon vorhanden ist. Dann guckst du, ob am Ende ein Unterstrich von einer Zahl gefolgt wird. Gibt es keinen Unterstrich, dann tippst du den Dateinamen ein und ergänzt ihn um einen Unterstrich und einer eins. Gibt es schon einen Unterstrich, guckst du dir die darauffolgende Zahl an und erhöhst sie um eins.
|
Re: Dateinamenerweiterung wenn Datei vorhande
Zitat:
Ich würde das Programm so umstellen, dass schon der erste Bericht einen Index _0 bekommt. Das vereinfacht die Sache, wenn Du nur von hinten nach dem ersten Underscore suchen musst. Grüße, Messie |
Re: Dateinamenerweiterung wenn Datei vorhande
Hallo,
danke erstmal für eure Antworten. Ja ich will tatsächlich nicht mit "Speichern unter"-Dialog arbeiten... Das System erzeugt den Dateinamen und ich will dann meine Überprüfungen / Erweiterungen machen. Leider kommt ein _0 Erweiterungen auch nicht infrage, da es schon hunderte alter Protokolle gibt ohne _0. Die Vorgehensweise ist mir klar, könntet ihr mir bei den Mehtoden / Funktionen helfen?
Delphi-Quellcode:
var
dateiname:string; begin dateiname := '11-22-33.pdf'; if FileExist(dateiname) then begin // Datei existiert schon aber ohne underscore, wie kann ich das jetzt rausfinden // ich könnte POS(x,y) nehmen und gucken ob _1 schon im Text vorhanden ist, aber wie der Teufel will, // existieren vielleicht auch so Dateien "11-22_1-11-22.pdf", also müsste ich prüfen ob die letzen 2 Zeichen // ein underscore und eine Zahl sind. Gut über length könnte ich ja schoneinmal die Länge abgreifen und dann // Length -1 müsste dann eine Zahl und Length -2 dann ein underscore sein // Wie würdet ihr das machen? ... end; |
Re: Dateinamenerweiterung wenn Datei vorhande
Zitat:
|
Re: Dateinamenerweiterung wenn Datei vorhande
Du hast doch immer den String, der als Dateiname fungieren soll. Nun prüfst du mit FileExists ob die datei vorhanden ist. Wenn nicht, speichern, wenn doch dann prüfst du ob Dateiname + _i vorhaneden ist. Wobei i dann in der Schleife incrementiert wird. So lange bis ein freier Dateiname zur verfügung steht.
|
Re: Dateinamenerweiterung wenn Datei vorhande
Zitat:
|
Re: Dateinamenerweiterung wenn Datei vorhande
Hi,
ich habe es jetzt folgendermaßen gelöst:
Delphi-Quellcode:
Es ging mir hauptsächlich um die Stringoperationen, aber im Prinzip brauche ich die gar nicht, wenn ich es so mache wie oben.PfadzurSeriennummer:=IncludeTrailingPathDelimiter(ProgrammIni.ArtikelNrPfad_Rev_2+ txtArtikelnr.Text+'\'+ProgrammIni.ProtokollOrdner ) +PPSSystem.DeviceData.Seriennummer+'.MPD'; i:=1; while (FileExists(PfadzurSeriennummer)) do begin PfadzurSeriennummer:=IncludeTrailingPathDelimiter(ProgrammIni.ArtikelNrPfad_Rev_2+ txtArtikelnr.Text+'\'+ProgrammIni.ProtokollOrdner )+ PPSSystem.DeviceData.Seriennummer+'_'+IntToStr(I)+'.PDF'; inc(I); end; Danke nochmal, ich denke so ist es sauber umgesetzt. Gruß DM |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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