anoniem Geplaatst: 26 juni 2003 Delen Geplaatst: 26 juni 2003 Hallo allemaal, Ik ben met een programma bezig en nu wil ik van een bestandsnaam de extensie afknippen als ik hem in een variabel zet. Bijvoorbeeld: filename = blub.zip filenamezonderext = filename - .zip Dit is natuurlijk niet de manier, maar dat is de bedoeling, kan iemand mij helpen, ik zat een iets te denken met een andere variabele die dan kijkt of hij al bij de punt is en dat hij dan daarna knipt. Quote Link naar reactie
anoniem Geplaatst: 26 juni 2003 Auteur Delen Geplaatst: 26 juni 2003 Dus beter gezegd, Hoe kan ik de linker 4 characters van een string afknippen. Ik ken wel het commando: right(mystring,4) Waarbij van mystring dan juist alleen de rechter 4 characters blijven staan. Hoe kan ik dit omgekeerd doen???? Quote Link naar reactie
anoniem Geplaatst: 26 juni 2003 Auteur Delen Geplaatst: 26 juni 2003 [quote:e8df47f4fe="pc_freak17"]Dus beter gezegd, Hoe kan ik de linker 4 characters van een string afknippen. Ik ken wel het commando: right(mystring,4) Waarbij van mystring dan juist alleen de rechter 4 characters blijven staan. Hoe kan ik dit omgekeerd doen????[/quote:e8df47f4fe] [img:e8df47f4fe]http://forum.fok.nl/i/s/nooo.gif[/img:e8df47f4fe] Hoe ga je dit oplossen: [i:e8df47f4fe]bestand.mpeg[/i:e8df47f4fe] Pseudo-code (d.m.v. achterwaartse scan door bestandsnaam?): [code:1:e8df47f4fe] public function GetPathWithFileName(byval FullFileName as string) as string dim pos as long dim i as long i = len(FullFileName) if (i > 0) then do if (mid(FullFileName,i,1) = '.') then pos = i endif i = i -1 loop until ((i = 0) or (pos <> 0)) endif GetPathWithFileName = Left(FullFileName,Pos-1) end function[/code:1:e8df47f4fe] Quote Link naar reactie
anoniem Geplaatst: 26 juni 2003 Auteur Delen Geplaatst: 26 juni 2003 Of nog korter [code:1:1d567d033b]Private Sub Form_Load() Dim s as string s = "help.hlp" msgbox Mid(s, 1, InStr(1, s, ".") - 1) End Sub[/code:1:1d567d033b] Quote Link naar reactie
anoniem Geplaatst: 26 juni 2003 Auteur Delen Geplaatst: 26 juni 2003 Ok, mooi. Het werkt, erg bedankt. Maar darkscribe zou je aub ff kunnen uitleggen wat de code doet, want ik moet er toch wel wat van leren. Alvast bedankt Quote Link naar reactie
anoniem Geplaatst: 26 juni 2003 Auteur Delen Geplaatst: 26 juni 2003 Heel eenvoudig, Mid(string, start, aantal) neemt een stuk van een string, je begint uiteraard bij karakter 1 en aantal is het aantal karakters in de string tot aan de punt. Om dit aantal karakters te vinden gebruik je instr(start, string, gezocht stukje string) die de string doorzoekt op het gezochte stukje string (de punt) en die het aantal karakters terug geeft tot en met de gezochte string. Hier moet je 1 afhalen omdat je de punt zelf niet mee wilt nemen. [code:1:f997618f97]Private Sub Form_Load() Dim s as string Dim L as Long s = "help.hlp" L = instr(1, s, ".") msgbox Mid(s, 1, L - 1) End Sub[/code:1:f997618f97] Quote Link naar reactie
anoniem Geplaatst: 26 juni 2003 Auteur Delen Geplaatst: 26 juni 2003 [code:1:0896433133] dim tmp dim s as string tmp=split("c:\windows\test.txt",".") s=ubound(tmp) [/code:1:0896433133] in deze richting moet je hetzoeken. Split hakt de string in stukken op de punt "." en plaatst ze in een array (tmp). ubound(tmp) betekent het laatste element van tmp, dus de zip,mpeg,exe,... Quote Link naar reactie
anoniem Geplaatst: 27 juni 2003 Auteur Delen Geplaatst: 27 juni 2003 Bedankt darkscribe, weer wat geleerd. Nu weer snel verder met mijn programma :wink: Quote Link naar reactie
anoniem Geplaatst: 27 juni 2003 Auteur Delen Geplaatst: 27 juni 2003 [quote:00d72c5e55="DarkScribe"]Of nog korter[/quote:00d72c5e55] :-? [quote:00d72c5e55="DarkScribe"] [code:1:00d72c5e55]Private Sub Form_Load() Dim s as string s = "help.hlp" msgbox Mid(s, 1, InStr(1, s, ".") - 1) End Sub[/code:1:00d72c5e55][/quote:00d72c5e55] input: "" --> output: run-time error input: "help" --> output: run-time error input: "foo.app.ext" --> output: "foo" :lol: Quote Link naar reactie
anoniem Geplaatst: 27 juni 2003 Auteur Delen Geplaatst: 27 juni 2003 Dat zijn inderdaad gevallen waarin het fout gaat, daar heb je gelijk in. Heb ik niet aan gedacht. :cry: Quote Link naar reactie
anoniem Geplaatst: 30 juni 2003 Auteur Delen Geplaatst: 30 juni 2003 [code:1:4bbf1e52c2] Dim fso As FileSystemObject Dim filename As String, filenamezonderext As String filename = "C:\Voorbeeld\Test.123.doc" Select Case Len(Trim(filename)) Case 0 'filename is lege string, error handler Case Else Set fso = New FileSystemObject filenamezonderext = fso.GetBaseName(filename) Set fso = Nothing End Select [/code:1:4bbf1e52c2] Bovenstaand voorbeeld heeft als resultaat dat filenamezonderext de waarde "Test.123" heeft. Overigens moet je wel de scripting library aanzetten (scrrun.dll) in de references van Visual Basic. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen