Abschnittsnamen auf .INI überprüfen/GetPrivateProfileSection

XanRaZoR

Mitglied
Hoi ;c)
Also ich hab folgende Probleme.

Frage 1:
- Ich will dass bei einem Klick auf nen Button ein Abschnittsname der in einem Textfeld steht in einer .INI-Datei gesucht wird. Falls er gefunden wird/nicht gefunden wird, soll das Programm entsprechend reagiern. Wie machen? ^^

Frage 2:
- Ich hab versucht mit GetPrivateProfileSection einen ganzen Abschnitt auszulesen. Funkt aber iwie bei mir nicht, ich bekomme einfach nur eine Zahl als ausgabe. Mein Code dafür:

Variablen:
Code:
Dim RetVal As Long
Dim TmpRetStr As String * 255

Sub:
Code:
Private Sub Command1_Click()
RetVal = GetPrivateProfileSection("Test", TmpRetStr, Len(TmpRetStr), App.Path & "\test.ini")
Label1.Caption = RetVal
End Sub

Das ergibt im Label einfach nur "6". Was mach ich da falsch?

Freu mich jez schon auf Hilfe xD

MfG.
raz0r
 
Hi XanRaZoR,

erstmal... bist Du Dir sicher, das Du dafür ini-Dateien brauchst?
Aus deinem Beitrag geht ja leider nicht hervor, wofür Du das brauchst. Okay, "GetPrivateProfileSection" gibt den Anreiz viel zu spekulieren, aber...

Zu Deinem Problem:
Wenn ich einen ini-Wert laden möchte, ja, brauch ich doch
einmal die [Überschrift] für die Überschrift des betreffenden "Blockes" in der Datei, richtig?
Dann den Variabel Namen (iniDateiensindDoof=),
den Dateinamen der ini-Datei und....
und jetzt kommts nämlich...
den String, der ausgegeben wird, wenn die Variabel nicht gefunden wurde.
Ich glaube bei Dir steht da Len(....), also
kann es eigendlich nur so sein:
Die Variabel TmpRetStr ist vorher nicht leer gewesen, der Inhalt ist 6 Zeichen lang und die wird ausgegeben, weil der String, den Du aus der ini-Datei laden willst, nicht da ist.

Wichtig wäre noch, das es einen GROßEN Unterschied zwischen dem Laden von Strings und dem Laden von Integer bzw. Long Werten gibt.

Ich hoffe das hilft dir erstmal weiter.
 
Hi,
danke für die Antwort.

Zur ersten Frage, ja ich möchte .INI-Dateien verwenden. Dient als ne Art "Datenbank Ersatz". Klingt komisch, aber ich hab mein eigenes kleines System entworfen damit ich nicht extra VB-Datenbanken zusätzlich lernen muss weil mir dafür keine Zeit bleibt.

- Wie gesagt, der Name der Überschrift des Blocks wird in einem Textfeld angegeben.
- Variabelname wusste ich nicht dass ich den brauch, wenn ich nur wissen will ob ein Block vorhanden ist.
- Dateiname ist ebenfalls gegeben (App.Path und so weiter...)
- Zu dem mit dem Len(...) Zeugs: Gut da hab ich wohl irgndnen Mist gebaut.

Wie dem auch sei, hab schon ne neue Idee wie ich das umbauen kann so dasses funkt.

Allerdings, was würdest du mir sonst empfehlen, wenn du INI's doof findest? ^^
Datenbanken sind mir n bisschen zu Zeitaufwendig zum lernen.

Möchte im Prinzip vorerst ein einfaches Server-Programm schreiben, welches mit einem Client-Programm verbunden ist. Im Client gibt der User seine Registrierungsdaten an mit denen er sich am Server anmeldne will.
Server soll kontrollieren ob User schon vorhanden etc.

Hast du ne Idee?

MfG.
raz0r

Btw: Server und Client sind per Winsock verbunden, falls das wichtig ist.
 
Zuletzt bearbeitet:
Okay, (hausmannsweise)

nimm txt Dateien.
Die sind viel leichter zu bearbeiten und auch leichter zu handeln.
Ich mach das immer so:

Ich nehm meinen Datensatz (Name,Adr., Hausnr,usw.) denk mir ein "Trennzeichen" (oder auch mehrere) aus (ich nehm immer "*|*") und reihst DIE aneinander in einen String.
Jetzt brauchst du nur noch eine Datei, wo du dies !zeilenweise! speichers (Append oder so).
Laden:
Jetzt kannst Du die Datei laden (entweder im Ganzen oder zeilenweise) und erst bei VBReturn splitten und dann bei "*|*".
Jetzt hast du alle Datensätze in einem Array. (Versuch nicht das mit MEHRdimensionalen Arrays Da bekommst du massive Probs. aber mit Variablen Arrays gehts wunderbar.)
 
Natürlich, dass ich darauf nicht selbst komm x_X

Danke fürn Hinweis, auf txt-Files bin ich noch garnicht gekommen, war zu vernarrt auf INI's.

Positive Bewertung ;-)
 
Zurück