Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datei mit fortlaufenden Namen speichern

Begonnen von Mykis, Juni 12, 2013, 23:10:28

⏪ vorheriges - nächstes ⏩

Mykis

Hallo,

mit folgenden Code überprüfe ich, ob eine Datei gleichen Namens schon vorhanden ist und ob diese überschrieben werden soll.
Wie müßte ich diesen Code ändern, damit bei vorhandener Datei der Dateiname (Kartenname) fortlaufend verändert wird. Z. B.  die vorhandene Datei heißt "Durchforschungsgrad", dann soll die nächste Datei mit "Durchforschungsgrad_1" etc. automatisch benannt werden. Ich möchte die Nachfrage des Überschreibens und die sonst nötige Umbenennung der vorhandenen Datei einsparen. :)

Beste Grüße
Frank

' Kopieren der Ergebnisgrafik in ein Standardverzeichnis und Löschen des Originals mit Hilfe von TCL-Systemkommandos
If Dir(MykIS_Root & publ_KartenDirName & "\" & Kartenname) > "" Then
If Nachricht_mit_JaNein("Eine Karte mit gleichen Namen befindet sich schon in diesem Verzeichnis. Soll diese überschrieben werden?") = False Then
GoTo a:
End If
End If
Temp2 = String(200, 0)
Call vb_run_ptcl("file copy -force " & GISWorkDir & "/" & Kartenname & " " & KartenZielFile, tmp2)
Nachricht_OK_Info ("Die resultierende Grafikdatei wurde unter " & KartenZielFile & " gespeichert!")
Call vb_run_ptcl("file delete -force " & GISWorkDir & "/" & Kartenname, tmp2)
A:
End Sub

daolix

Ich glaub eigentlich gib es ne Api die das machen kann, aber die fällt mir jetzt nicht ein.
Du könnst einen Counter mitlaufen und solange Dir$ ausführen bis es eine leere Stringfolge ergibt.

Code (Achtung Luftcode, ist nur ne Idee, denn so wirklich lesbar ist dein Code jetzt nicht) [Auswählen]

dim s as string
dim c as string
dim i as string
dim sNeuerKartenname as string

do
If i > 0 Then c = "_" & Format$(i)
s = Dir(MykIS_Root & publ_KartenDirName & "\" & Kartenname & c)
i = i + 1
loop until len(s) = 0
sNeuerKartenname  = Kartenname & c

filecopy Sourcepath & Kartenname, DestinationPath & sNeuerKartenname

Aber sollte Kartenname ein kompletter Dateiname mit Extension sein, so musst du diese vorher zerlegen.

Mykis

Hallo daolix,

vielen Dank für deinen Code der genau meine Aufgabe erfüllt. Ich habe nur noch den Kartenname von der Extension trennen und i as Integer setzen müssen.


   
    dim s as string
    dim c as string
    dim i as integer
    dim sNeuerKartenname as string

    Do
    If  i > 0 Then c = "_" & Format$(i)
    s = Dir(MykIS_Root & publ_KartenDirName & "\" & (Art_Name4GIS) & c & "." & Mid(publ_Zielgrafiktyp, 1, 3))
    i = i + 1
    Loop Until Len(s) = 0
    sNeuerKartenname = (Art_Name4GIS) & c & "." & Mid(publ_Zielgrafiktyp, 1, 3)
    FileCopy GISWorkDir & "\" & Kartenname, MykIS_Root & publ_KartenDirName & "\" & sNeuerKartenname
    Nachricht_OK_Info ("Die resultierende Grafikdatei wurde unter " & MykIS_Root & publ_KartenDirName & "\" & sNeuerKartenname & "
    gespeichert!")


LG
Frank