Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 129
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26.10.2011, 16:28   #1 (Direktlink)
War schon mal da
 
Registriert seit: 21.10.2011
Beiträge: 32
Standard Variable nicht declariert?

Hallöle - ich hoffe, ich nerve nicht!

Obwohl ich in einer Proc die Variablen deklariere (mit declare) akzeptiert
der Interpreter diese an bestimmten Stellen nicht.
Extern sind sie nicht nocheinmal dekariert!
Das betrifft in dieser Art die Variablen V$, O$ und Nr&, alle anderen aber nicht.

Hier der Code:

' Auswerten Klick Suchen
' -----------------------------------------------------------------------------
proc Bei_Klick_Suche
declare Text$, Vorw$, Ort$, V$, O$
declare Gefunden%, Nr&

Text$ = Gettext$(txtSuche%) ' Lesen des Eingabefeldes

if val(Text$) > 0 ' Vorwahl oder Ort erkennen
Vorw$ = val(Text$): Ort$ = ""
else
Ort$ = Text$ : Vorw$ = 0
endif

' Schnellsuche im Array, Markierung im Listenfeld
Gefunden% = 0
Nr& = 0
repeat
O$ = objArr#.GetOrt(Nr&)
V$ = objArr#.GetVorwahl(Nr&)
if (V$ = Vorw$) OR (O$ = Ort$)
Gefunden% = 1
SelectString(lstVwo%, -1, v$)
return
endif
inc Nr&
until (Nr& = objArr#.Anz&-1)

endproc

Und hier die Meldung: (für V$) sinngemäß auch für O$ und Nr&




Wat nu?
Im Voraus wieder vielen Dank!
Transrapidfan ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 26.10.2011, 16:35   #2 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von _Joerg_
 
Registriert seit: 15.02.2011
Beiträge: 106
Standard

Ist natürlich ohne lauffähigen Code schwer zu sagen aber es könnte hierdran liegen:
O$ = objArr#.GetOrt(Nr&)
V$ = objArr#.GetVorwahl(Nr&)

Versuch mal, ob es mit:
O$ = Str$(objArr#.GetOrt(Nr&))
V$ = Str$(objArr#.GetVorwahl(Nr&))
funktioniert.
Hast Du schonmal versucht, die Variablen umzubenennen in längere Namen?
__________________
Anhören lohnt sich wuestensand.info
_Joerg_ ist offline   Mit Zitat antworten
Alt 26.10.2011, 18:51   #3 (Direktlink)
War schon mal da
 
Registriert seit: 21.10.2011
Beiträge: 32
Standard Hat Interpreter die Deklaration am Ende "vergessen"

Hallo _Joerg_!
Vielen Dank. Jedoch liegt es nicht daran - habe es auch getestet.

Das Seltsame ist ja: Die Schleife wird sogar korrekt ausgeführt.
(Suchen nach Ort bzw. Vorwahl, danach Markieren des Eintrags in der Liste)
Ich habe mal ein messagebox(O$, "",0) hinter das O$ = Str$(objArr#.GetOrt(Nr&)) gesetzt.
Und es wird auch das angezeigt, was ich erwartet habe.
Aber erst am Ende der Prozedur kommt dann die Meldung - komisch.
Also arbeitet der Interpreter zunächst korrekt mit den Variablen.
Nur am Ende der Proc hat er sie "vergessen".
Die Gesamtprozedur tut also komplett, was sie soll.

Das ist ja das Problem, wo ich nicht weiter weiß.

Gruß Matthias!
Transrapidfan ist offline   Mit Zitat antworten
Alt 26.10.2011, 19:07   #4 (Direktlink)
RGH
Forenmaskottchen
 
Benutzerbild von RGH
 
Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
Standard

Dann poste mal einen lauffähigen (!!!) Code, der den Fehler bei mir reproduziert. Dann kann Dir bestimmt geholfen werden.

Gruß
Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c
AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c


http://www.xprofan.de
RGH ist offline   Mit Zitat antworten
Alt 26.10.2011, 19:13   #5 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Ändere mal diese Zeile
Code:
until (Nr& = objArr#.Anz&-1)
auf

Code:
 
until (Nr& >= objArr#.Anz&-1)
Was passiert? Was ist Anz&? Was steht da?
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 26.10.2011, 19:25   #6 (Direktlink)
War schon mal da
 
Registriert seit: 21.10.2011
Beiträge: 32
Standard Probleme mit dem IF-Befehl?

@Alle:
Ich habe noch ein wenig rum probiert.
Es scheint der IF-Befehl zu sein!
Drehe ich die Zeile if (V$ = Vorw$) OR (O$ = Ort$) um in (Vorw$ = V$) OR (Ort$ = O$), und vertausche die Variablennamen links und rechts von Istgleich, dann schipft der Interpreter plötzlich über die andere Variable!
Hat das IF vielleicht Probleme, wenn es zwei Variablen vergleichen soll?
Ansonsten läuft ja das Ganze!
Es ist ja kein Problem mit dem Speicher (Schleifenüberlauf etc.) sondern
eine Unstimmigkeit mit deklarierten Variablen, die aber vorher korrekt benutzt werden!

Schaun wir mal weiter...
Mal sehen, ob ich den Qellcode rüber kriege....


Gruß Matthias
Transrapidfan ist offline   Mit Zitat antworten
Alt 26.10.2011, 19:29   #7 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Die Fehlermeldung muss nicht korrekt sein. Bei einem Speicherüberlauf ist die oft nicht korrekt.
Überprüfe, was in Anz& steht.
Versuche auch das mal:
Code:
until (Nr& >= ((objArr#.Anz&)-1))
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 26.10.2011, 20:01   #8 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

Vielleicht fehlt hier noch ein IF ?

Code:
if (V$ = Vorw$) OR (O$ = Ort$)
IF Gefunden% = 1
SelectString(lstVwo%, -1, v$)
ENDIF
return
endif
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist gerade online   Mit Zitat antworten
Alt 26.10.2011, 20:06   #9 (Direktlink)
War schon mal da
 
Registriert seit: 21.10.2011
Beiträge: 32
Standard Quellcode zum Überprüfen

@AHT

In Anz& steht die Anzahl der Elemente.
Die Schleife endet, wenn Nr& den Wert Anz&-1 hat.
(Nr& als Index immer 0..Anz&-1)

Ich schicke mal den Code rüber. Ist sicherlich besser.
Habe auch etwas zusätzlich rumkommentiert.
Aber keine Hektik. Für heute ist bei mir erst mal Feierabend.
Ich melde mich dann im Laufe des Tages morgen wieder.
Gönn Dir auch eine Pause!

Gruß und Dank: Matthias

Geändert von Transrapidfan (04.03.2012 um 15:55 Uhr)
Transrapidfan ist offline   Mit Zitat antworten
Alt 26.10.2011, 20:26   #10 (Direktlink)
War schon mal da
 
Registriert seit: 21.10.2011
Beiträge: 32
Standard Es ist das return!!!!

@AHT und @ Horsthorn!!

Ich habe noch mal schnell den Tipp von HorstHorn versucht.
Knapp daneben - aber es war dennoch ein Joker drin!

Mit folgenden Änderungen:

1. Mein Gefunden% hatte doch einen tieferen Sinn...
Aha:
repeat Blablabla....
if DiesUndDas dann Gefunden% = 1 sonst weiter

!!!! until Gefunden% OR (Nr& = objArr#.Anz&-1) !!!! Das isses!

2. Nicht mit RETURN die Proc verlassen! (Zeile löschen Fehlerquelle!!!
Durch UNTIL Gefunden% ... ja überflüssig!

Dann klappt es!!!!! Huraaaaaaaaa....

Warum darf ich die Proc nicht mit Return verlassen?????

Aber quält das Programm ruhig noch ein wenig, vielleicht sind ja noch ein
paar Bugs drin, die ich noch nicht bemerkte.

U n t e r p r o b l e m :
Das nicht rechtzeitige Aktualisieren des Dialogfensters in der Prc Bei_Klick_Einlesen. Da passt was noch nicht so richtig....

Nochmals vielen Dank an Alle Helfer.
Matthias

Geändert von Transrapidfan (04.03.2012 um 15:55 Uhr)
Transrapidfan ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 26.10.2011, 21:35   #11 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

>>> Warum darf ich die Proc nicht mit Return verlassen?????

Du darfst die Proc mit Return verlassen, aber nicht die Schleife!
Der Stack oder Schleifenzähler müssen doch bereinigt werden, sonst
gibt es so komische Fehlermeldungen
__________________
Gruß Thomas

Wenn mir früher jemand gesagt hätte, ich würde
freiwillig eine Wanze mit mir herum tragen und sie
auch noch selbst aufladen, hätte ich laut gelacht.

Heute habe ich ein Smartphone.


http://realsource.de
ts-soft ist gerade online   Mit Zitat antworten
Alt 26.10.2011, 21:41   #12 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Zitat:
Warum darf ich die Proc nicht mit Return verlassen?????
'return" darf NICHT in einer Schleife stehen, wenn du die proc verlassen willst. Erst mit 'break' aus der Schleife raus und dann mit 'return' die proc verlassen

Edit: oops, Thomas war schneller....
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Alt 26.10.2011, 21:42   #13 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von _Joerg_
 
Registriert seit: 15.02.2011
Beiträge: 106
Standard

Du darfst eine Prozedur wohl mit Return verlassen aber nicht eine Schleife.
Mit Break/Continue kann man Schleifen verlassen/neu starten.
Am besten ist es, eine Variable Wert$ (oder so) zu deklarieren, die in der Prozedur bestückt und am Ende mit Return zurückgeliefert wird.
es wäre außerdem besser, wenn Du Deinen Code formatiert hier postest. Dann fallen solche Sachen eher auf.
Also so:
Code:
repeat
  O$ = objArr#.GetOrt(Nr&)
  V$ = objArr#.GetVorwahl(Nr&)
  if (V$ = Vorw$) OR (O$ = Ort$)
    Gefunden% = 1
    SelectString(lstVwo%, -1, v$)
    Break 'damit kannst Du eine Schleife verlassen
  endif
  inc Nr&
until (Nr& = objArr#.Anz&-1)
Wenn Du [_code_]Hier der Quelltext[_/code_] ohne _ eingibst, klappt's.
__________________
Anhören lohnt sich wuestensand.info
_Joerg_ ist offline   Mit Zitat antworten
Alt 27.10.2011, 08:04   #14 (Direktlink)
War schon mal da
 
Registriert seit: 21.10.2011
Beiträge: 32
Standard

@Alle

Erst mal allen einen "Guten Morgen"!

Aha: Also erst mal die Schleife sauber verlassen und nicht einfach gleich die ganze Proc - alles klar. Hätte MIR! nicht passieren dürfen nach 24 Jahren Hobbyprogrammierung. Eigentlich müßte ich mich dafür Erschiessen lassen!
Aber diese Gehehmigungen jedes Mal.....
Vielleicht sollte ich vor dem Eintippen mal gründlicher im Handbuch lesen!
Besonders, wenn ich eine neue Programmiersprache verwende - wie zur Zeit.

Hat schon jemand die Sache mit dem "Nichtaktualisieren" des Dialogfensters heraus gefunden? (siehe Quellcode Proc Bei_Klick_Einlesen)
Wäre toll.

Also bis denne & nochmals vielen Dank für die Tipps!

Matthias
Transrapidfan ist offline   Mit Zitat antworten
Alt 27.10.2011, 09:20   #15 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

Bei mir tritt es nicht auf, hängt vielleicht mit der geringen Datenmenge zusammen oder sz deine GraKa zu schwach.
Ich würde während des einlesen das ganze Fenster sperren und danach wieder Freigeben.
Dann sieht man die Werte auch erst wenn sie komplett eingelesen sind und es flackert nichts.

Sperren
External("USER32","LockWindowUpdate",%Hwnd)

Einlesen

Freigeben
External("USER32","LockWindowUpdate",0)
repaint

Wäre ein Versuch wert
  Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable Linkbox bei Ebay Zeriel Sonstige Programmiersprachen 0 27.07.2008 18:45
Variable von VBA an Excel übergeben! NeXoDrEuS Visual Basic, Visual Basic.NET 0 04.07.2008 10:13
DivX6(Variable Bitrate) Switcher Software - Allgemein 0 04.08.2006 00:02
system variable powerweb Windows XP 3 06.04.2006 10:25
Kann Arrays mit Anzahl von const-Variable nicht deklarieren ~Flammadarion~ C/C++, Visual C++, Visual C++.NET 3 21.03.2005 18:56



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:51 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2