1.4k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo ich habe ein großes Probelm. Leider finde ich den Fehler nicht.

Ich habe Bilder die so heißten IR_(5 oder 4 Stellige Zahl).Jpg

Diese Bilder sozusagen einlesen von einem Verzeichnis und nach sessions unterteilen dass heißt, wenn eine Zahl die eingelesen worden ist größer als 1 ist dann beginnt eine neue Session und ein stop soll in das Programm gemacht werden.
Wenn also die Zahl 2987 und die nächste zahl 2989 dann neue Session.
Bei mir bringt er an dieser Stelle ein Fehler :
test_mod_num(Z) = CInt(test_mod(Z))
Warum?

hier zur übersicht das ganze Programm:
Option Explicit
Dim sess As Object
Dim row As Integer
Dim col As Integer
Dim var1(50) As Double
Dim i As Integer
Dim VarMax As Double
Dim Var2 As Double
Dim Pfad As String
Dim Inputtext As String
Dim Zeile As String
Dim Filename As String
Dim J As String
Dim d As String
Dim AnzDateien As Integer
Dim test(200) As String
Dim test_mod(200) As String
Dim test_mod_num(200) As Integer
Dim laenge As Double
Dim beginn As Integer
Dim num As Integer
Dim session_num As Integer
Dim Z As Double
Dim x As Double
Dim datei(200) As String
Private Sub CommandButton1_Click()
Call PlaySequence_Click
End Sub


Private Sub TextBox1_Change()
Pfad = TextBox1
Pfad = Pfad + "\*.*"
End Sub

Sub PlaySequence_Click()
Dim resultat As String

row = 1
col = 1
i = 0
VarMax = 0

'Lesen des Inhaltsverzeichnisses
d = Dir(Pfad)
AnzDateien = 1

Do While d > ""
'MsgBox d
' MsgBox AnzDateien

test(AnzDateien) = d
DoEvents
d = Dir
AnzDateien = AnzDateien + 1
Loop

MsgBox ("Hier die Anzahl der Dateien " & AnzDateien)

'Ausgabe Array
For Z = 1 To AnzDateien
'MsgBox test(Z)
Z = Z + 1
Next

'Aus wieviel Zeichen besteht der Dateiname ?
laenge = Len(test(1))
MsgBox ("Der Dateiname ist " & laenge & " lang")
'vierstellige Bildnummer
If laenge = 11 Then
beginn = 4
num = 4
End If
'fuenfstellige Bildnummer
If laenge = 12 Then
beginn = 4
num = 5
End If
'sechsstellige Bildnummer
If laenge = 13 Then
beginn = 4
num = 6
End If

' Stop

'Zahlen aus dem Dateinamen herauslesen
For Z = 1 To AnzDateien
test_mod(Z) = Mid(test(Z), beginn, num)
MsgBox test_mod(Z)
test_mod_num(Z) = CInt(test_mod(Z))
Z = Z + 1
Next

'Bilder einlesen
'session_num = 1

'test_mod2(Z,session_num)=test_mod(z),session_num
For Z = 1 To AnzDateien


x = Z + 1
If test_mod_num(x) > test_mod_num(Z) Then
session_num = session_num + 1
MsgBox ("erfuellt !")
End If
MsgBox (session_num & " " & test_mod(Z) & " " & test_mod(x))
'Z = Z + 1
Next

' Get a reference to the ThermaCAM™ Researcher object
Set sess = _
Worksheets("Tabelle1").OLEObjects("Objekt 1").Object

session_num = 1

Do While True

' Store IR image time and spotmeter temperatures
' in the cells
Worksheets(1).Cells(row, col).Value = _
sess.GetNamedValue("Ar01.max")

var1(i) = sess.GetNamedValue("Ar01.max")

i = i + 1

Exit Do
'End If
sess.StepForward

row = row + 1
col = 1
Loop

End Sub

Private Sub UserForm_Click()

End Sub



Bitte helft mir.

Danke
Gruß Marina

3 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Ganz klar: AnzDateien wird größer als 200 und test_mod_num ist ein Feld von 200 Elementen - jeder Zugriff auf ein höheres Feld bringt einen Fehler.
0 Punkte
Beantwortet von
Hii Danke für deine Antwort.
Also erhöhre ich einfach test_mod_num auf sagen wir so 500 dann müsste es gehn . Aber trotzdem geht es nicht.
kommt immer noch die Fehlermeldung Typen unverträglich?

Lg Marina
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
MsgBox ("Hier die Anzahl der Dateien " & AnzDateien)
Welchen Text liefert dir denn dieser Dialog? Unter 500?

Lautet die Fehlermeldung hingegen "Typen unverträglich", so ist test_mod(Z) zu dem Zeitpunkt einfach keine Zahl (also mindestens ein Zeichen innerhalb des Textes ist keine Ziffer). Aber auch dafür hast du ja bereits in der Zeile darüber einen Dialog, der jede "Zahl" ausgibt. Leider nicht eindeutig, denn so siehst du nicht, ob vielleicht ein Leerzeichen vorne und hinten mit dranklebt.

Überprüf das mal (und ändere den Dialog in z.B. MsgBox ">" & test_mod(Z) & "<" )
...