Falsche Textausgabe

siriuscanicula

Grünschnabel
Hallo,

ich bin VB-Beginner, hab gerade ein Problem das ich nicht versteh und bitte diesbezüglich um Hilfe.

Ich benutze eine Variable "look_at" die ihren Wert durch
Code:
look_at = Mid(Map(Char_Y + 1 + 1), Char_X + 1 + 1, 1)
erhält.

Des weiteren gibt es ein Textfeld das mir den Wert der look_at Variable anzeigt.
Code:
TxtText.Text = look_at
Das funktioniert einwandfrei wenn ich die Textausgabe im selben Sub ausführen lasse in dem sich auch die "look_at"- Wertzuweisung befindet.
Also wie folgt:
Code:
look_at = Mid(Map(Char_Y + 1 + 1), Char_X + 1 + 1, 1)
TxtText.Text = look_at
Dadurch hab ich die korrekte Ausgabe der "look_at" Variable im Textfeld.

Ich möchte aber die Zeile
Code:
TxtText.Text = look_at
über einen zusätzlichen Sub namens "text_show" aufrufen.

Also schreib ich den Sub "text_show" der so aussieht.
Code:
Sub Text_show()
TxtText.Text = look_at
End Sub

Aber wenn ich "Text_show" so aufrufe,
Code:
look_at = Mid(Map(Char_Y + 1 + 1), Char_X + 1 + 1, 1)
Text_show
dann wird ein falscher Wert ausgegeben.

Die Variable look_at ändert sich zwischen Wertzuweisung und Sub "Text_show" nicht.

Und wenn ich das ganze so aufrufe,
Code:
look_at = Mid(Map(Char_Y + 1 + 1), Char_X + 1 + 1, 1)
Text_show
TxtText.Text = TxtText.Text & look_at
dann werden im Textfeld zwei Werte ausgegeben wobei der erste Wert falsch ist und der zweite korrekt.

Es wird also ein falscher Wert angezeigt der der Variable nie zugewiesen wurde.

Danke
 
Um einen Fehler schon mal ausschließen zu können:

Handelt es sich bei look_at auch ja um eine globale Variable, d.h. ist sie außerhalb deiner Funktion über

Code:
public look_at as string

definiert ?
 
Zuletzt bearbeitet:
Ja...ist sie.

Unter Forms/FrmMain befindet sich der auszuführende Code und unter Modules/Module1 wurde sie, exakt so wie von dir eben beschrieben, definiert.
 
Klingt aber irgendwie immer noch so, als würde er nicht die richtige Variable verwenden.

Probier mal Folgendes:

Scheibe in beiden Modulen (falls noch nicht vorhanden) folgende Zeile ganz vorne an den Anfang:

Code:
Option Explicit

Damit wird ausgeschlossen, daß der VB-Compiler eine Variable von sich aus neu vergibt, falls er sie nicht finden kann.

Sollte dann eine Fehlermeldung kommen, versuche mal die Varible mit Angabe des Moduls zu verwenden, also:

Code:
frmmain.TxtText.Text = modul1.look_at
 
"Option Explicit" war noch nicht vorhanden.
Hab es im "Module1" und im Form "FrmMain" hinzugefügt und keine Fehlermeldung erhalten. Trotzdem das selbe Prob wie zuvor.

Code:
"FrmMain.TxtText.Text = Module1.look_at"

hab ich auch probiert aber leider auch kein Erfolg.

Darf ich vielleicht die 250 kb auf Webspace packen und kann sich das mal wer anschauen? Ist nicht allzuviel Code.
Ich will nicht zuviel verlangen aber ich sitz bestimmt schon seit 14 Uhr und such den Fehler und komm einfach nicht dahinter.
 
Super!

Danke dir.

Die Adresse lautet:



Lass dich bitte nicht von den verschiedenen Tilesets verwirren...soll mal ein RPG werden...und ich bin noch am Basteln und Probieren.

Unter "Private Sub Form_KeyPress(KeyAscii As Integer)" sind die Anweisungen und ein Sub darunter befindet sich der "Text_show" Sub.

Aber schaus dir am besten selbst an.

Danke nochmal...ich weiß das echt zu schätzen.
 
Wenn mich nicht alles täuscht hab ich den Fehler gefunden:

Du hast zwei mal die gleiche Variable "look_at" deklariert, einmal global im Modul Module1 und einmal lokal in Form_KeyPress.
Dadurch schreibst du in Form_KeyPress den Wert immer in die lokale Variable, ließt aber in der Funktion Text_show die globale Variable aus.

Kurz gesagt: Nimm einfach die lokale Variable aus Form_KeyPress raus

Code:
Private Sub Form_KeyPress(KeyAscii As Integer)
'Dim look_at As String                ' Rausnehmen
    Select Case KeyAscii

Dann sollte es laufen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück