Problem mit for-next schleife

hallo erstmals!

ich habe da ein problem. keine ahnung wo der fehler liegt!?!

hier mal der code:

sub test ()

Dim stringst(100) As String

For r = 10 To 100

If GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_“ & r) „“ Then

stringst® = GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_2“ & r)

End If
Next r

For U = 0 To 8
xpText1(U).Text = stringst(U)
Next U

end sub

also ich habe auf meinem formular 9 textfelder (xptext1(0) bis xptext1(8))

wenn ich diese sub ausführe sind aber alle textfelder LEER!!

woran liegt das?

danke und mfg
michael

Hallo Michael.

sub test ()

Dim stringst(100) As String

Damit dimensioniert Du ein Datenfeld mit 101 Einträgen, 0 bis 100

For r = 10 To 100

Hier beginnst Du mit dem Zählen bei 10…

stringst® = GetINISetting(strIniLehrstoffSt, „Pläne“,xpCombo3.Text & „_“ & xpCombo2.Text & „_2“ & r)

…was bedeutet, dass nach der ersten Übereinstimmung frühestens ein Wert in stringst(10) geschrieben werden kann.

End If
Next r

For U = 0 To 8

Hier beginnst Du mit dem Zählen bei 0…

xpText1(U).Text = stringst(U)

…aber in stringst(0) bis stringst(8) kann vorher ja nichts reingeschrieben worden sein

Next U

end sub

Ich denke, dass müsste der Fehler sein

Viele Grüße
Carsten

so, hab das jetzt so gemacht!
funktioniert aber auch nicht:

Sub StandardLehrplanladen()

Dim stringst(100) As String

For r = 10 To 100

If GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_“ & r) „“ Then

stringst® = GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_2“ & r)

End If
Next r

For U = 10 To 18
xpText1(U).Text = stringst(U)
Next U
End Sub

Hallo Michael.

Erscheint dort denn eine Fehlermeldung?

Viele Grüße
Carsten

Hallo Michael.

Erscheint dort denn eine Fehlermeldung?

nein nichts! es sind nur alle textfelder leer!

hier hab ich die schleife nochmal vereinfacht:

Sub StandardLehrplanladen()

Dim stringst(18) As String

For r = 10 To 18

If GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_“ & r) „“ Then

stringst® = GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_2“ & r)

xpText1®.Text = stringst®
End If
Next r
End Sub

Hallo Michael.
Also, wenn dort auch keine Fehlermeldung erscheint, dann kann es ja eigentlich nur noch so sein, daß die If-Abfrage niemals True wird.

Setze doch mal einen Haltepunkt in die erste Zeile der Prozedur und starte Deine Anwendung. Wenn sie an dem Haltepunkt gestoppt hat, drücke immer F8 (Einzelschritt). Dann kannst an der Markierung erkennen, ob der Code innerhalb des If-Blocks ausgeführt wird.

Viele Grüße
Carsten

Hallo Michael.

Setze doch mal einen Haltepunkt in die erste Zeile der
Prozedur und starte Deine Anwendung. Wenn sie an dem
Haltepunkt gestoppt hat, drücke immer F8 (Einzelschritt). Dann
kannst an der Markierung erkennen, ob der Code innerhalb des
If-Blocks ausgeführt wird.

hab das jetzt so probiert! also die if abfrage funktioniert!!
und wird genau 2 mal ausgeführt, denn dann wird if false! passt perfekt, nur im textfeld steht halt nix

hm habe jetz das was bei getinisetting als zweites argument steht (der string mit den vielen & ) in einer variable gespeichert!

jetz funktionierts!!

kann mir einer erklären warum das vorher (ohne variable) nicht funktioniert hat?

danke

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Michael.

kann mir einer erklären warum das vorher (ohne variable) nicht
funktioniert hat?

Ist mir auch ein Rätsel. Aber ich kenne GetIniSetting gar nicht. Habe ich in der MSDN nicht gefunden.

Viele Grüße
Carsten

Ist mir auch ein Rätsel. Aber ich kenne GetIniSetting gar
nicht. Habe ich in der MSDN nicht gefunden.

Viele Grüße
Carsten

getinisetting findest du auch nicht in der msdn!
das ist eine „selbstgeschriebene“ funktion (nicht von mir, sonder vom internet)

die funktion lautet

Declare Function GetPrivateProfileString Lib „Kernel32“ Alias „GetPrivateProfileStringA“ (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

mfg
michael

Hallo Michael.

Declare Function GetPrivateProfileString Lib „Kernel32“ Alias
„GetPrivateProfileStringA“ (ByVal lpApplicationname As String,
ByVal lpKeyName As String, ByVal lpDefault As String, ByVal
lpReturnedString As String, ByVal nSize As Long, ByVal
lpFileName As String) As Long

Ja, das ist API-Kram. Den kan ich nich’ wechseln

Viele Grüße
Carsten

Hallo Michael,

hm habe jetz das was bei getinisetting als zweites argument
steht (der string mit den vielen & ) in einer variable
gespeichert!

jetz funktionierts!!

kann mir einer erklären warum das vorher (ohne variable) nicht
funktioniert hat?

Du wirst wohl den Compiler etwas überfordert haben.

If GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_“ & r ) „“ Then

Du fummelst hier einen Text zusammen, aber „r“ ist eine Zahl, kein Text.
Hinzu kommt noch, dass API-Funktionen mit meist ASCIIZ und nicht mit Unicode arbeiten.

Mit:
If GetINISetting(strIniLehrstoffSt, „Pläne“, xpCombo3.Text & „_“ & xpCombo2.Text & „_“ & Str$®) „“ Then

Müsste es eigentlich funktionieren.

MfG Peter(TOO)