WinFuture-Forum.de: Variable In Variable Auswerten ? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Variable In Variable Auswerten ?


#1 Mitglied ist offline   mamsoft 

  • Gruppe: aktive Mitglieder
  • Beiträge: 20
  • Beigetreten: 02. Juni 06
  • Reputation: 0

  geschrieben 30. Dezember 2008 - 23:27

Hi an alle,
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
0

Anzeige



#2 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 30. Dezember 2008 - 23:55

Ich fasse nochmal zusammen: Du hast folgenden String "Das ist der %Anzahl Testtext vom %Datum" und willst '%Anzahl' und '%Datum' durch ihre aktuellen Werte ersetzen, richtig?
Also einfach den String durchsuchen und die Schlüsselwörter ersetzen (Stichwort: parse, keyword).
0

#3 Mitglied ist offline   mamsoft 

  • Gruppe: aktive Mitglieder
  • Beiträge: 20
  • Beigetreten: 02. Juni 06
  • Reputation: 0

geschrieben 31. Dezember 2008 - 00:27

@Mr. Floppy
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?
0

#4 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 31. Dezember 2008 - 00:34

Ich kenne mich mit VB6 nicht sonderlich aus. Es sollte aber auf jeden Fall Funktionen zur Stringmanipulation geben. Daraus muß man sich dann das Passende zusammenbasteln. Am einfachsten wäre sowas wie 'replace'. Da gibt man üblicherweise den String selbst an, den Suchstring (Schlüsselwort) und den Ersetzungstext (hier also der aktuelle Wert). Eventuell muß der Wert vorher noch explizit in einen String gewandelt werden.

Dieser Beitrag wurde von Mr. Floppy bearbeitet: 31. Dezember 2008 - 00:48

0

#5 Mitglied ist offline   mamsoft 

  • Gruppe: aktive Mitglieder
  • Beiträge: 20
  • Beigetreten: 02. Juni 06
  • Reputation: 0

geschrieben 31. Dezember 2008 - 00:52

den string zu durchsuchen geht zb. mit dem befehl instr.
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)
0

#6 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 31. Dezember 2008 - 00:56

Zitat

aber ich kenne solche funktionen von anderen programmen. zb. beim automatisierten umbennenen von dateien z.b. -> %ort - %datum - %nr (z.b. wie bei irfanView)

Ja schon aber da wird das auch nicht anders gemacht.
0

#7 Mitglied ist offline   mamsoft 

  • Gruppe: aktive Mitglieder
  • Beiträge: 20
  • Beigetreten: 02. Juni 06
  • Reputation: 0

geschrieben 31. Dezember 2008 - 01:00

aha also meinst du ich komme um die einzelabfrage jeder variable nicht herrum?
das ist aber schade, aber nungut ich danke dir trotzdem Mr. Floppy

(wenn jemand anders doch noch ne idee hat, immer raus damit)
0

#8 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 31. Dezember 2008 - 01:08

Um die Einzelabfrage zu umgehen, müßte man dem Programm begreiflich machen, daß es sich bei %Schlüsselwort um keinen String sondern eine Variable handelt. Im Prinzip versuchst Du damit Code einzuschleusen (ganz grob gesagt). Das setzt voraus, daß die Variable z.B. %Anzahl schon im Programm existiert und gesetzt ist. Außerdem müssen die Variablennamen zur Laufzeit noch existieren, was allerdings (fast) nur bei interpretierten Sprachen der Fall ist (keine Ahnung was VB6 ist). Alles in allem nicht sehr schön und sehr fehleranfällig, vom Sicherheitsaspekt mal ganz zu schweigen.
0

#9 Mitglied ist offline   Gast 

  • Gruppe: aktive Mitglieder
  • Beiträge: 818
  • Beigetreten: 02. September 07
  • Reputation: 22

geschrieben 31. Dezember 2008 - 01:13

Hallo mamsoft

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?
Alle sagten es geht nicht, da kam einer der das nicht wusste und tat es einfach.
0

#10 Mitglied ist offline   mamsoft 

  • Gruppe: aktive Mitglieder
  • Beiträge: 20
  • Beigetreten: 02. Juni 06
  • Reputation: 0

geschrieben 31. Dezember 2008 - 01:31

@Mr.Floppy

Beitrag anzeigenZitat (Mr. Floppy: 31.12.2008, 03:08)

Um die Einzelabfrage zu umgehen, müßte man dem Programm begreiflich machen, daß es sich bei %Schlüsselwort um keinen String sondern eine Variable handelt.

genau das möchte ich bezwecken

Beitrag anzeigenZitat (Mr. Floppy: 31.12.2008, 03:08)

Im Prinzip versuchst Du damit Code einzuschleusen (ganz grob gesagt). Das setzt voraus, daß die Variable z.B. %Anzahl schon im Programm existiert und gesetzt ist. Außerdem müssen die Variablennamen zur Laufzeit noch existieren

das ist alles gegeben. Variablen existieren und haben werte und heißen auch genauso

Beitrag anzeigenZitat (Mr. Floppy: 31.12.2008, 03:08)

Alles in allem nicht sehr schön und sehr fehleranfällig, vom Sicherheitsaspekt mal ganz zu schweigen.

-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

0

#11 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 31. Dezember 2008 - 01:38

Die Antwort kam hier schon: Mit Replace kannst du Teile ersetzen. Du musst einfach dann jede mögliche Variable, die du unterstützen möchtest durchgehen:

x=Replace(x,"%Anzahl","" & Anzahl)
x=Replace(x,"%Datum", "" & Now)
(... etc. ...)


Fertig. Pro unterstützte Variable eine Zeile. Also nicht allzuviel Aufwand.
0

#12 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 31. Dezember 2008 - 01:40

Zitat

das ist alles gegeben. Variablen existieren und haben werte und heißen auch genauso

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

-Fehleranfällig kann man per code auch wieder umgehen

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).
0

#13 Mitglied ist offline   mamsoft 

  • Gruppe: aktive Mitglieder
  • Beiträge: 20
  • Beigetreten: 02. Juni 06
  • Reputation: 0

geschrieben 31. Dezember 2008 - 01:51

*hand gegen die stirn knall*
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.
0

#14 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 31. Dezember 2008 - 09:22

Zitat

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.

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.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0