Problem bei IF ... THEN

  • Themenstarter Themenstarter daredevil
  • Beginndatum Beginndatum
D

daredevil

Hallo,
weiß jemand wie man einen String bestimmer Länge überprüft?

So sieht der Code bei mir jetzt aus:
Code:
Dim lastfile As String * 20
Dim test As Long
test = GetPrivateProfileString("main", "lastfile", "", lastfile, "20", App.Path & "\settings.ini") 'liest einen String aus der settings.ini

If lastlek <> "" Then
cmbchoosefile.Text = CStr(lastlek) 'muss eingefügt werden, sonst tritt ein fehler auf
openfile lastfile 'öffnet die datei
End If

Beim Beenden meines Programms wird immer der Name der zuletzt geöffneten Datei in der "settings.ini" gespeichert. Beim Starten, will ich prüfen ob in dem String den ich aus der INI-Datei auslese auch etwas drinsteht.
IF lastfile <> "" THEN... geht leider nicht, weil der String 20 Zeichen lang ist (wegen der API-Funktion). Ich habe inzwischen alles mögliche ausprobiert, komm aber nicht drauf wie ich die Abfrage schreiben muss damit geprüft ob wirklich ein Name in dem String steht.

Ich hoffe ihr könnt mir helfen
daredevil
 
Kann das sein, daß du dich hier irgendwie vertippt hast, denn einmal benutzt du lastfile und ein anderes mal benutzt du lastlek.
Option Explicit wäre das Zauberwort.

Gruß Homer
 
Hallo Daniel,
dass mit dem vertippen, war mein Fehler: Ich habe die Variabeln nochmal zur besseren Verständlichkeit umbennant. Trotzdem geht es nicht, auch mit Option Explicit. Auch kann ich den String der ausgelesen wird nicht in die Combobox als Text einfügen:

Code:
cmbchoosefile.Text = lastfile
daredevil
 
Ich versteh leider nicht warum der String unbedingt 20 Zeichen lang sein muß?
Entweder es steht ein Eintrag drin in der ini oder eben nicht (dann wäre die Variable leer). Kannst Du mal erklären warum Du das so machst - muß ja einen Grund haben, oder?!

MfG
..::Six Dark::..
 
Der String muss 20 Zeichen lang sein bzw. eine angegebene Länge haben, sonst gibts einen Fehler beim auslesen der INI-Datei: activevb.
Ich weiß zwar, dass VB die restlichen Zeichen mit Leerzeichen auffüllt, aber auch eine Abfrage in der Form IF lastfile <> " " THEN... geht nicht.

daredevil
 
Ich hatte das Problem auch und habe es folgender Maßen gelöst
Code:
Private Function cutstring(ByRef thestring As String) As String
    
    Dim finalstring As String
    Dim tempcounter As Long

    Do
        tempcounter = tempcounter + 1
        If Asc(Right(Left(thestring, tempcounter), 1)) = 0 Then Exit Do
        
        finalstring = finalstring + Right(Left(thestring, tempcounter), 1)
    Loop
    
    ripstring = finalstring
    
End Function

MfG

Tobias
 
Es klappt!

Danke Tobias,
das Script klappt perfekt! Es hat sich zwar in der letzten Zeile ein kleiner Fehler eingeschlichen: statt ripstring muss da cutstring stehen, aber auch egal, Hauptsache es funktioniert.
 
Also ich hab auch schon mit ini-Dateien gearbeitet, aber das dort ein String 20 Zeichen lang sein muß hab ich noch nicht feststellen können! Meine Strings sind definitiv nicht 20 Zeichen lang und die Firma, in der das Programm schon seit über 3 Jahren läuft hat sich noch nicht beschwert, das es nicht funktioniert oder das es Fehler geben würde... komisch...

MfG
..::Six Dark::..

PS: Aber ihr habt es ja hinbekommen... ;)
 
Re: Es klappt!

Original geschrieben von daredevil
Danke Tobias,
das Script klappt perfekt! Es hat sich zwar in der letzten Zeile ein kleiner Fehler eingeschlichen: statt ripstring muss da cutstring stehen, aber auch egal, Hauptsache es funktioniert.

Ups, Sorry. Der Grund dafür ist einfach: es gab schon eine Funktion sutstring und daher habe ich es ripstring genannt, aber für das Forum hatte ich sie dann einmal schnell umbenannt und da hatte ich die Rückgabe des Wertes übersehen.
 
hi,
du musst einfach die überflüssigen zeichen entfernen, die länge des strings wird dir über die rückgabe der api vermittelt

sprich,
erweitere dein Prog um das hier, dann klappts auch mit den Null Strings ;-)

Dim lastfile As String * 20
Dim test As Long


test = GetPrivateProfileString("main", "lastfile", "", lastfile, "20", App.Path & "\settings.ini") 'liest einen String aus der settings.ini

'wenn nun nix drine steht in lastfile, werden alle blanks abgeschnitten und alstfile ist somit leer und nicht mehr 20zeichen lang

lastfile = Left(lastfile, test)

If lastlek <> "" Then
cmbchoosefile.Text = CStr(lastlek) 'muss eingefügt werden, sonst tritt ein fehler auf
openfile lastfile 'öffnet die datei
End If
 

Neue Beiträge

Zurück