Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dateiadresse (Link) auslesen - Teil davon speichern?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 01.02.2015, 17:05    Titel: Dateiadresse (Link) auslesen - Teil davon speichern? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 01.02.2015, 19:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 01.02.2015, 20:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Roland Chastain



Anmeldungsdatum: 05.12.2011
Beiträge: 192
Wohnort: Frankreich

BeitragVerfasst am: 02.02.2015, 20:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 03.02.2015, 06:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz