Only the last dimension of an array can be changed - ReDim
Verfasst: 03.04.2007 21:10
Ich bin gerade dabei eine Prozedur zu schreiben um Suchmuster zu erzeugen.
Also aus "123 ABC_abs.bmp" soll z.B. "123*ABC_abs.bmp", "123*ABC*abs.bmp" oder "*ABC*.bmp", usw erzeugt werden.
Irgendwie merde ich wohl versuchen müssen die Anzahl der zur Auswahl stehenden Suchmuster zu begrenzen. Soweit bin ich aber noch nicht.
Momentan zerlege ich den String auf zwei Ebenen in ein Array. Die erste Ebene enthält die Originalteile und die zweite
enthält die Teile mit "*" aber ohne " ", "-" oder "_".
Mein aktuelles Problem ist erstaunlicherweise noch gar nicht die Logik sondern die für mich unerklärliche Fehlermeldung
"Only the last dimension of an array can be changed with ReDim.".
Also aus "123 ABC_abs.bmp" soll z.B. "123*ABC_abs.bmp", "123*ABC*abs.bmp" oder "*ABC*.bmp", usw erzeugt werden.
Irgendwie merde ich wohl versuchen müssen die Anzahl der zur Auswahl stehenden Suchmuster zu begrenzen. Soweit bin ich aber noch nicht.
Momentan zerlege ich den String auf zwei Ebenen in ein Array. Die erste Ebene enthält die Originalteile und die zweite
enthält die Teile mit "*" aber ohne " ", "-" oder "_".
Mein aktuelles Problem ist erstaunlicherweise noch gar nicht die Logik sondern die für mich unerklärliche Fehlermeldung
"Only the last dimension of an array can be changed with ReDim.".
Code: Alles auswählen
Procedure Fuelle_Suchmuster_Auswahl(MusterDatei.s)
Original.s = GetFilePart(MusterDatei.s)
Original.s = Left(Original.s, Len(Original.s)-Len(GetExtensionPart(Original.s))-1)
#Original=0
#Vorbereitet=1
Original_Laenge = Len(Original.s)
Feld =1
Dim DateiNamenTeile.s (1,Feld)
Zeichen.s = Left(Original.s, 1)
If Zeichen.s <> " " And Zeichen.s <> "-" And Zeichen.s <> "_"
DateiNamenTeile.s (#Vorbereitet,0)=""
Else
DateiNamenTeile.s (#Vorbereitet,0)="*"
EndIf
VorZeichen.s=Zeichen.s
For i = 1 To Original_Laenge
Zeichen.s = Mid(Original.s, i, 1)
ZeichenASCII = Asc(Zeichen.s)
VorZeichenASCII = Asc(VorZeichen.s)
If Zeichen.s = " " Or Zeichen.s = "-" Or Zeichen.s = "_"
If VorZeichen.s <> " " And VorZeichen.s <> "-" And VorZeichen.s <> "_"
DateiNamenTeile.s(#Original,Feld)=OriginalTeil.s
DateiNamenTeile.s(#Vorbereitet,Feld)=VorbereitetTeil.s+"*"
OriginalTeil.s=""
VorbereitetTeil.s=" "
Feld+1
ReDim DateiNamenTeile.s (1,Feld)
EndIf
OriginalTeil.s=OriginalTeil.s+Zeichen.s
ElseIf ZeichenASCII > 47 And ZeichenASCII < 58
If(VorZeichenASCII < 48 Or VorZeichenASCII > 57) ;And Len(OriginalTeil.s)
DateiNamenTeile.s(#Original,Feld)=OriginalTeil.s
DateiNamenTeile.s(#Vorbereitet,Feld)=VorbereitetTeil.s+"*"
OriginalTeil.s=""
VorbereitetTeil.s=" "
Feld+1
ReDim DateiNamenTeile.s (1,Feld)
EndIf
OriginalTeil.s=OriginalTeil.s+Zeichen.s
VorbereitetTeil.s=VorbereitetTeil.s+Zeichen.s
ElseIf Zeichen.s = LCase(Zeichen.s)
If VorZeichen.s = UCase(VorZeichen.s) And Len(OriginalTeil.s) > 1
DateiNamenTeile.s(#Original,Feld)=OriginalTeil.s
DateiNamenTeile.s(#Vorbereitet,Feld)=VorbereitetTeil.s+"*"
OriginalTeil.s=""
VorbereitetTeil.s=" "
Feld+1
Debug Feld
ReDim DateiNamenTeile.s (1,Feld)
; Dim DateiNamenTeile.s (1,Feld)
EndIf
OriginalTeil.s=OriginalTeil.s+Zeichen.s
VorbereitetTeil.s=VorbereitetTeil.s+Zeichen.s
ElseIf Zeichen.s = UCase(Zeichen.s)
If VorZeichen.s = LCase(VorZeichen.s) And Len(OriginalTeil.s) > 1
DateiNamenTeile.s(#Original,Feld)=OriginalTeil.s
DateiNamenTeile.s(#Vorbereitet,Feld)=VorbereitetTeil.s+"*"
OriginalTeil.s=""
VorbereitetTeil.s=" "
Feld+1
ReDim DateiNamenTeile.s (1,Feld)
EndIf
OriginalTeil.s=OriginalTeil.s+Zeichen.s
VorbereitetTeil.s=VorbereitetTeil.s+Zeichen.s
EndIf
Next
EndProcedure
Pattern.s = "*.bmp|*.bmp;*.BMP|*.emf|*.emf;*.EMF|*.gif|*.gif;*.GIF|*.ico|*.ico;*.ICO|*.jpg|*.jpg;*.JPG|"
Pattern.s = Pattern.s + "*.png|*.png;*.PNG|*.tga|*.tga;*.TGA|*.tif|*.tif;*.TIF|*.wmf|*.wmf;*.WMF"
MusterDatei.s = OpenFileRequester("Bitte (Muster-)Datei auswählen","c:\",Pattern.s,0,0)
; z.B. _-PlaBLA_-blaBLAbla-MeineWolken001.bmp
Fuelle_Suchmuster_Auswahl(MusterDatei.s)