PDA

Vollständige Version anzeigen : dateinamen kürzen ohne pfadangabe ?


dmsman
03.07.2001, 14:46
Hallo,
Ich hab jetzt eine variable: savefilename die den aktuellen dateinamen inc.pfad erhält !
jetzt will ich aber nur den namen ohne pfad darstellen hab auch schon folgenden code gefunden:
Public Function PfadUndName(pfa As String, art As String)

' ---------------------------------------------------------
' Diese Funktion trennt den mitgegebenen Pfad vom
' Dateinamen und gibt je nach Parameter den Pfad oder
' den Dateinamen zurück.
' Parameter:
' Name: um den Dateinamen zurück zu geben
' Pfad: um den Pfad zurück zu geben
' ---------------------------------------------------------

Dim Nam As String
Dim merk As String
Dim t As Integer
Dim lang As Integer
Dim wo As Integer

' stelle wo pfad und DB-name zu trennen ist suchen
merk = pfa
lang = Len(pfa)
For t = 0 To lang - 1
merk = Mid(pfa, lang - t, 1)
If merk = "\" Then
wo = lang - t
Exit For
End If
Next t

' pfad und name trennen
Select Case art
Case "Name"
PfadUndName = Right(pfa, Len(pfa) - wo)
Case "Pfad"
PfadUndName = Left(pfa, wo)
End Select

End Function


wo setze ich jetzt meine variable savefilename ein ?
danke für eure Hilfe :)

Kurt aus Kienitz
03.07.2001, 14:54
Hallo,

Um den Pfad zu bekommen rufst Du die Funktion so auf:

stPfad = PfadUndName(SaveFileName, "Pfad")

Um den Namen zu bekommen rufst Du die Funktion so auf:

stPfad = PfadUndName(SaveFileName, "Name")

HTH

dmsman
03.07.2001, 15:08
Kurt muss der von mir oben genannte code in ein modul?

Kurt aus Kienitz
03.07.2001, 15:56
würde ich machen, kann man bestimmt öfter mal gebrauchen ;)

WalterS
03.07.2001, 19:29
Hallo!
Eine kleine Anmerkung!
Man kann auch einen String von rechts nach links durchsuchen und dann beim 1. vorhanden sein des \ abbrechen
dim pfad as string
dim wo as integer
pfad=" x:\temp\disk1\Automation weder\xxx\help.txt" ' zum Beispiel

for wo = len(pfad) to 3 step -1
if mid(pfad,wo,1)="\" then exit for
next wo

Rest wie gehabt!

Pepi
03.07.2001, 20:08
Hi dmsman,
du könntest aber auch - wenn du VBA 6 einsetzt) die neue Funktion InstrRev anwenden. Dann würde es wie folgt aussehen:
SaveFilename = Mid(SaveFilename, InStrRev(SaveFilename, "\") + 1)

Suche von hinten nach dem letzten \, gib als String den Teilstr zurück, der ab der gefundenen Stelle + 1 liegt (und den Rest des Strings lang ist).

HTH

dmsman
04.07.2001, 07:38
Ok alles schön und gut aber bei mir klappts irgendwie nicht! ich hab jetzt ein modul mit folgenden code:
----------------------
dim pfad as string
dim wo as integer
pfad=safefilename

'warscheinlich erkennt er aber safefilename nicht,
weil die variable in einem andere modul definiert ist wie mach ich sie überall bekannt?

for wo = len(pfad) to 3 step -1
if mid(pfad,wo,1)="\" then exit for
next wo

und wie sieht jetzt der aufruf aus?
ich will das ergebnis in einem ungebunden
textfeld darstellen lassen name z.B text25?
danke

dmsman
04.07.2001, 07:40
hab noch vergessen dass zuvor natürlich noch dieses steht:
Public Function PfadUndName(pfa As String, art As String)
....

Kurt aus Kienitz
04.07.2001, 08:26
Guten Morgen,

Die Function solltest Du so lassen wie sie war (hast Du hoffentlich aufgehoben :))!

Irgendwo lässt Du den Benutzer über den Common-Dialog eine Datei auswählen (haben wir ja gestern schon gehabt).
Dort passiert auch die Nachfrage, ob es sich wirklich um die gewünschte Datei handelt.
Wenn der Benutzer diese Frage mit JA beantwortet passiert irgendwas.
In diesen Teil der IF-Abfrage schreibst Du folgenden Code:

Me.Text25 = PfadUndName(SaveFileName,"Name")

HTH

dmsman
04.07.2001, 13:17
Ja jetzt hat alles geklappt endlich ! es lag an mir ich hatte einen groben denkfehler doch ich bin dann mittagessen gegangen hab drüber nachgedacht und jetzt gehts auf einmal :)))) *freuuuuuuuuuuu*
danke nochmal Kurt und den anderen
bis zur nächsten frage *grins*
cua
PS:beitrag kann geschlossen werden !

A.S.
04.07.2001, 13:23
Hi,

nicht das Du denkst ich schließe hier Beiträge, weil ich Spass daran hätte.

Dieser Beitrag wird nicht geschlossen.

Gruß

Arno

A.S.
05.07.2001, 10:20
Hallo,

eigentlich ist der Beitrag ja schon abgelaufen, aber hier noch ein Verweis auf eine InStrRev-Variante für A97 (für A00 hat's Pepi ja schon gezeigt):
Access97 Filenamen ermitteln (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=64425)

Dort der Beitrag von Manuela Kulpa, ganz am Ende.

Gruß

Arno

dmsman
05.07.2001, 11:36
Hi Arno,

wieso wer schließt denn dann die Beiträge wenn du es nicht machst?

A.S.
05.07.2001, 11:41
Hallo,

Du hast schon recht, ich kann Beiträge schließen. Mache dies in der Regel jedoch nur, wenn Beiträge doppelt, dreifach etc. sprich einfach Redundant gepostet werden.

Du erinnerst Dich? ;)

Andere Beiträge schließe ich in der Regel nicht. Leider verfügt die Forensoftware nicht über eine Statusfunktion, mit der die Anfragenden bekanntgeben könnten, ob der Beitrag für sie erledigt ist oder nicht.

Selbst dann würde ich jedoch keinen Beitrag einfach so schließen wollen. Möglicherweise kommt ein Teilnehmer mit einem ähnlichen Problem, findet diesen über die Suche und müsste dann wieder einen neuen Beitrag erstellen, anstatt seine Verständnisprobleme auf Basis des gleichen Beitrags ausräumen zu lassen.

Gruß

Arno