|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 01.02.2015, 17:05 Titel: Dateiadresse (Link) auslesen - Teil davon speichern? |
|
|
Ich habe in einem bestimmten Ordner, ein paar Dateien drin. Diese sind nummeriert von 0-112. Desweiteren beinhaltet der Dateiname auch noch Buchstaben.
Was ich brauche sind die Zahlen. Und nur die brauche ich! Zur Zeit, lese ich den kompletten Link ein, wo die Datei liegt und speichere in einer Variable die Zahlen. Mein Problem ist, dass ich im vorraus die Anzahl der Stellen angeben muss. Bei 2-stelligen Zahlen, wenn ich 2 Stellen angebe, funktioniert alles perfekt, doch bei 3-stelligen Zahlen bei 2 Stellen speichert er nur die 2-Stelligen Zahlen. Gebe ich 3 Stellen an, speichert er auch einen Punkt mit bei 2-Stelligen Zahlen.
Was kann ich machen, um zwischen 2 und 3-stelligen Zahlen zu unterscheiden können?
Davon brauche ich die Zahlen:
Zitat: | C:\icons\Icon_test_05_test.bmp |
Zitat: | C:\Programm\icons\Icon_test_105_test.bmp |
Wie lese ich am günstigsten die Zahlen daraus aus?
Code: | DateiName = "C:\Programm\icons\Icon_test_105_test.bmp"
Datei = MID(Dateiname, Instr(Dateiname, ANY "0123456789"), 2)
' funktioniert nur bei 2-stelligen Zahlen! |
Bis jetzt fiel mir keine geeignete Lösung ein?
Gruß
ALWUM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 01.02.2015, 19:36 Titel: |
|
|
Wie wärs wenn du dir einfach anschauen würdest, was an den entsprechenden Stellen im String steht, also etwa so: Code: | IF Mid(Dateiname, x, 1) = "_" THEN ... |
Du kannst hier entweder prüfen auf Zeichen, die signalisieren dass die Zahl bereits zu Ende ist oder prüfen ob es sich um eine Zahl handelt: Code: | IF asc(zeichen) >= asc("0") and asc(zeichen) <= asc("9") THEN ... |
_________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 01.02.2015, 20:20 Titel: |
|
|
St_W hat Folgendes geschrieben: | Wie wärs wenn du dir einfach anschauen würdest, was an den entsprechenden Stellen im String steht, also etwa so: Code: | IF Mid(Dateiname, x, 1) = "_" THEN ... |
Du kannst hier entweder prüfen auf Zeichen, die signalisieren dass die Zahl bereits zu Ende ist oder prüfen ob es sich um eine Zahl handelt: Code: | IF asc(zeichen) >= asc("0") and asc(zeichen) <= asc("9") THEN ... |
|
Habe es selber lösen können:
Code: | Datei(i) = MID(Dateiname, Instr(Dateiname, ANY "0123456789"), 3)
IF RIGHT(Datei(i), 1) = "." THEN Datei(i) = MID(Dateiname, Instr(Dateiname, ANY "0123456789"), 2) |
Ich brauche ja bloß mit Right prüfen, ob das letzte Zeichen eine Punkt ist!
Bin nicht gleich drauf gekommen!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Roland Chastain
Anmeldungsdatum: 05.12.2011 Beiträge: 192 Wohnort: Frankreich
|
Verfasst am: 02.02.2015, 20:22 Titel: |
|
|
Hallo ALWIM!
Da ist eine andere Möglichkeit:
Code: | #include "regex.bi"
function Match(byval pattern as string, byval buffer as string) as string
dim re as regex_t
dim pm as regmatch_t
dim pbuff as zstring ptr
pbuff = strptr(buffer)
regcomp(@re, pattern, 0)
if regexec(@re, pbuff, 1, @pm, 0) = 0 then
function = mid(*pbuff, 1 + pm.rm_so, pm.rm_eo - pm.rm_so)
else
function = ""
end if
regfree(@re)
end function
const DATEINAME = "C:\Programm\icons\Icon_test_105_test.bmp"
dim s as string = Match("[0-9]+", DATEINAME)
dim i as integer = ValInt(s)
print(s) ' 105
print(Str(i)) ' 105 |
|
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 03.02.2015, 06:19 Titel: |
|
|
Code: | Dim TFilePathName as String = "C:\ordner-1\ordner-2\datei345.txt"
Dim TPos as Integer = InStrRev(TFilePathName, "\")
Dim TFileName as String = Mid(TFilePathName, TPos + 1)
TPos = InStrRev(TFileName, ".")
TFileName = Left(TFileName, TPos - 1)
Dim TNum as String
For TPos = 1 to Len(TFileName)
Select Case TFileName[TPos - 1]
Case Asc("0") to asc("9"): TNum += Chr(TFileName[TPos - 1])
End Select
Next
Print TNum
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|