INI Dateien

Hallo,

wenn ich von VB aus auf Ini Dateien mit der Api GetPrivateProfilString
zugreifen möchte, ist es dann egal wie gross die Ini datei ist oder ist sie auf 64 KB begrenzt?
Wie gross ist denn der Zeitaufwand beim Zugriff auf die INI Datei?
Es würden sich später mal ca. 300 Sektionen mit je 8 Eintraegen darin befinden.

VLG Alex

Hi Alex!
Die ini darf nur 64kB groß sein.
Andernfalls musst du anders als mit GetPrivateProfileString darauf zugreifen.Du kannst sie ja einfach als Textdatei einlesen (Line Input).
Der Zeitfaktor ist doch relativ irrelavant.Du kannst die Werte ja beim Start deines Programmes in Variablen speichern.
Gruß.Timo Engel

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

Hallo timo,

vielen dank für deine rasche Antwort.
Das ist einfacher gesagt als getan. Das Prob ist das das Progg nun schon allein wenn es ausgeführt wird 35 MB Arbeitsspeicher belegt :frowning:
Wenn ich nun ca. 2400 Eintraege einlese in variablen nunja dann geht das alles ins grenzenlose.
Der Hintergrund ist folgender. Es handelt sich um ein Chatsystem und wenn jemand eine handlung schreibt, geht diese an den Server, dieser würde das file oeffnen und die handlung auslesen.
Nun stelle dir mal vor 10 User schreiben binnen 1 Minute eine handlung.
Der Server würde arg ins schwitzen kommen und alles würde haengen, da dieser ja auch noch andere aufgaben hat :frowning:

Ich hoffe du verstehst nun meine Problematik :s

MFG Alex

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

Hallo Alex,

Wenn ich nun ca. 2400 Eintraege einlese in variablen nunja
dann geht das alles ins grenzenlose.

Nun stelle dir mal vor 10 User schreiben binnen 1 Minute eine
handlung.

Naj, da bekommst du noch ein paar andere Probleme.
Bei dieser Datenmenge macht ein Datenbank wesentlich mehr Sinn.

MfG Peter(TOO)

Hallo Peter,

das denke ich auch :frowning: Die Variante der DB schwebte mir auch vor :s
Aber mal angenommen, ich erstelle eine tabelle und declariere darin die Felder wiefolgt

Name,Handlung1, Handlung2 … Handlung8

Wenn ich nun beim starten des Servers die DB öfnnen und auf den letzten Recordset setze, also rs.Movelast und dann den gewünschten Datensatz direkt anspringe ( Die Position ist ja bekannt) mit rs.absoluteposition=212.
Dauert dann der Zugriff sehr lange oder geht des rel. Flink?

MFG Alex

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

Hi!
Es ist der Datenbank doch egal, ob du den ersten oder den letzten Eintrag anspringst.
Du brauchst ja auch gar nicht alle zu lesen.
Du sortierst dir die Tabelle nach ID (wobei die größte ja warscheinlich die letzte ist) mit ASC und limitierst dir die Anzahl der Datensätze auf 1.
Also Select * FROM tbl_xxx ORDER by ID ASC LIMIT 1;

Gruß.Timo

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

Hi!
Es ist der Datenbank doch egal, ob du den ersten oder den
letzten Eintrag anspringst.
Du brauchst ja auch gar nicht alle zu lesen.
Du sortierst dir die Tabelle nach ID (wobei die größte ja
warscheinlich die letzte ist) mit ASC und limitierst dir die
Anzahl der Datensätze auf 1.
Also Select * FROM tbl_xxx ORDER by ID ASC LIMIT 1;

Gruß.Timo

Hallo Timo,

vielen Dank erst einmal für deine Antwort.
Zu der Variante mit der Datenbank habe ich mich nun durchgerungen.
Anbei mal noch eine Erklärung. Man kann später auch einmal ueber den Server schreiben. Auf dem Server sowie beim Clienten ist eine Combobox. Diese Comboxbox wird mit den ganzen Handlungen gefuellt.
Die Daten in der DB sind sortiert, also ist die handlung in der combobox die auf 0 ist, auch in der DB auf 0.

Also Bsp. Alptraum, Begruessung etc.
Wenn der Server gestartet wird, wird die DB geöffnet und dann die Handlungen eingelesen und in das Combo Feld eingetragen.
Wenn nun ein Client, sich anmeldet dann macht der Server nichts weiter als die Combobox auf den Server zu durchlaufen und den Clienten die ganzen Handlungen zu senden(Im Format:Handlungsname;Handlungsname…)
So hat der Client die ganzen Handlungen. Führt dieser nun eine aus so wird nur der Index des gewaehlten Eintrages gesendet(Combo1.listindex)
Der Server weiss ja dann um welche Handlung es sich handelt. Dann schaut der Server welcher Eintrag genommen werden muss(Pro Handlung kommen 8 Eintraege zur Auswahl)
Der Server sollte dann den entsprechenden Datensatz auslesen und dann an alle Clienten senden!

Der Aufbau der Datenbank ist wiefolgt
Tabellename = Daten
Felder
Name -> Name der Handlung
Eintrag1
Eintrag2

Eintrag8

Bsp. es wurde die nummer 156 als Handlung übergeben und der server hat ermittelt das der 5 Eintrag genommen werden muss.

dann dachte ich das so. (Datenbank wurde beim start des servers geöffnet)
rs = recordset der db ( wurde mit set rs=db.openrecordset("SELECT *From Daten) geöffnet

rs.absoluteposition= nummer die übergeben wurde
wert=rs!Eintrag5
… weiterverarbeitung des wertes…

Was ich aber nicht verstehe was du mit Limit1 und ASC sowie die ID meinst? Ist deine Variante schneller als meine?

MFG Alex