Variable In Variable Auswerten ?
#1
geschrieben 30. Dezember 2008 - 23:27
ich möchte in VB6 eine .ini Datei auslesen in der Texte stehen, die Variablen in meinem VB-Projekt auslesen sollen.
Das auslesen des Textes ist kein prob.
Wie muss ich den ausgelesenen String in VB verwenden?
Ich möchte Z.b.
"Das ist der %Anzahl Testtext vom %Datum" <- das steht in der .ini Datei
soll das ergeben:
"Das ist der 1 Testtext vom 30.12.08" <- soll in Label in VB angezeigt werden
Ich hoffe ihr habt mein Problem verstanden?
Weiß auch nicht unter welchem begriff ich mein Problem googlen soll?
Bin für eure Hilfe dankbar
Anzeige
#2
geschrieben 30. Dezember 2008 - 23:55
Also einfach den String durchsuchen und die Schlüsselwörter ersetzen (Stichwort: parse, keyword).
#3
geschrieben 31. Dezember 2008 - 00:27
ja du hast mich richtig verstanden.
also den string suche ich nach den "%schlüsselwörter" ab.
aber wie ersetze ich die erkannte variable durch den aktuellen wert der variable?
#4
geschrieben 31. Dezember 2008 - 00:34
Dieser Beitrag wurde von Mr. Floppy bearbeitet: 31. Dezember 2008 - 00:48
#5
geschrieben 31. Dezember 2008 - 00:52
der gibt die pos des gefundenden parameter zurück und den kann man dann mit nen bissel gebastel ersetzen.
aber das ist nicht ganz das was ich möchte. sonst müsste ich nach jeder variable in dem string suchen und den durch den wert der variable ersetzen. das ist aber ganz schön aufwendig und habe nicht alle variablen damit erschlagen.
das muss doch noch eleganter zu lösen sein. ich weiß eben nur nicht den richtigen befehl
ich hatte mir gedacht ich durchsuche den string nach "%" und danach wird der wert der variable ersetzt.
nur wenn ich z.b. den string "%Anzahl" auslese ist er ja ebnefalls in einem string.
diesen müsste ich wiederum nach jeder variable abfragen. sprich: if schluesselwort = "%Anzahl" then ersatz_string = anzahl
das wiederum müsste ich dann bei jeder variable machen.
oh das prob ist ja echt verwirrend.
aber ich kenne solche funktionen von anderen programmen. zb. beim automatisierten umbennenen von dateien z.b. -> %ort - %datum - %nr (z.b. wie bei irfanView)
#6
geschrieben 31. Dezember 2008 - 00:56
Zitat
Ja schon aber da wird das auch nicht anders gemacht.
#7
geschrieben 31. Dezember 2008 - 01:00
das ist aber schade, aber nungut ich danke dir trotzdem Mr. Floppy
(wenn jemand anders doch noch ne idee hat, immer raus damit)
#8
geschrieben 31. Dezember 2008 - 01:08
#9
geschrieben 31. Dezember 2008 - 01:13
Du schreibst die Variable wird aus einer ini-Datei ausgelesen.
Wer oder was trägt den Wert in die Datei ein?
inis sind ja eigentlich durch ihre Gliederung (in Abschnitte und Werte) dafür ausgelegt um schnell ausgelesen zu werden.
Oder handelt es sich bei dir um eine reine Textdatei welche bloß die Endung .ini besitzt?
#10
geschrieben 31. Dezember 2008 - 01:31
Zitat (Mr. Floppy: 31.12.2008, 03:08)
genau das möchte ich bezwecken
Zitat (Mr. Floppy: 31.12.2008, 03:08)
das ist alles gegeben. Variablen existieren und haben werte und heißen auch genauso
Zitat (Mr. Floppy: 31.12.2008, 03:08)
-Sicherheitsaspekt kann vernachlässigt werden.
-Fehleranfällig kann man per code auch wieder umgehen
@Gast
ja es ist eine echte .ini Datei. Ist aber nicht zwingend notwendig.
Die Variablen in der ini Datei trage ich selber per Hand ein. Somit kann ich schnell und einfach das Programm ändern/erweitern ohne das ich das Projekt neu compalieren und ersetzen muss.
Als Info:
ich möchte mit meinem Programm eine Sprachausgabe mit Logox (von G-DATA und relativ gut bekannt) realisieren.
Und damit die Texte nich zu statisch wirken gibt es in der ini Datei mehrere zur auswahl die zufällig ausgewählt werden.
Damit ich den Wortschatz immer erweitern und anpassen möchte brauche ich diesen umweg.
Ich hoffe, jetzt wird einiges klarer.
Dieser Beitrag wurde von mamsoft bearbeitet: 31. Dezember 2008 - 01:33
#11
geschrieben 31. Dezember 2008 - 01:38
x=Replace(x,"%Anzahl","" & Anzahl) x=Replace(x,"%Datum", "" & Now) (... etc. ...)
Fertig. Pro unterstützte Variable eine Zeile. Also nicht allzuviel Aufwand.
#12
geschrieben 31. Dezember 2008 - 01:40
Zitat
Sicher? Hast Du das mit den Variablennamen schon mal mit 'nem Debugger überprüft. Sobald Dein Code in Maschinensprache übersetzt wird, gehen in der Regel auch die Namen verloren. Die sind nur für den Programmierer wichtig, um den Überblick zu behalten. Die zentrale Frage ist also, ob VB6 eine interpretierte Sprache ist. Das weißt Du am besten.
Zitat
Eben nicht! Angenommen Du vertippst Dich in der ini-Datei und plötzlich steht da '%Anzah'. Das gibt's im Programm nicht und wird zu einem Fehler führen, weil es erst zur Laufzeit zum Tragen kommt.
Versuche es lieber auf die althergebrachte Art. Das ist zwar umständlicher, bietet Dir aber im Endeffekt mehr Möglichkeiten (z.B. Fehler abfangen).
#13
geschrieben 31. Dezember 2008 - 01:51
na klar doch .... Lofote hat recht. So ist es am besten zu realisieren.
Kenne auch den Replace Befehl aber bin einfach nicht drauf gekommen.
Manchmal muss man eben den Text vor sich haben.
Danke nochmal an euch. Jetzt kann ich die ganze Nacht weiter proggen. (Aber ich glaube dieses Jahr wird es nicht mehr fertig *gg*)
Ich möchte aber nochmal zu den Variablen wärend der Laufzeit eingehen.
Ist richtig, dass die Variablennamen sich danach verlieren aber die umwandlung der Variable wurde ja schon in der Entwicklerumgebung geschrieben und diese ist somit noch vorhanden.
#14
geschrieben 31. Dezember 2008 - 09:22
Zitat
Ist richtig, dass die Variablennamen sich danach verlieren aber die umwandlung der Variable wurde ja schon in der Entwicklerumgebung geschrieben und diese ist somit noch vorhanden.
Der Compliervorgang weisst jeder Variable einen Speicherbereich zu. D.h. es heisst dann nicht mehr "i=1" sondern schreibe in Adresse 0x0032 1 rein. Das ist viel schneller und macht einen der mächtigen Geschwindigkeits-Unterschiede zwischen Interpreter und Complier. Zur Laufzeit weiss das Programm nicht mehr, dass die Variable mal "i" hieß (Ausnahme sind Debugversionen). Da deine INI-Datei erst zur Laufzeit ausgelesen wird (und nur dort machts Sinn), ist der Bezug bereits verloren.