|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 12.03.2008, 18:08 Titel: |
|
|
Zitat: | ...werden wir wahrscheinlich pech haben |
ja, bzw du, weil du ein problem hast
mit source können wir einfach mehr sehen, und auch versuchen um den fehler rumzuprogrammieren... z.B. einfach eine andere, funktionsgleiche, aber anders programmierte routine nehmen
und wenns dir garnet passt, den code rauszurücken, nimm doch einige subs raus (das programm muss weiter laufen!! und der fehler muss nat. da sein)
MFG
flo _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 12.03.2008, 19:10 Titel: |
|
|
In dem einen Post fragst du um Hilfe, im nächsten lehnst du es ab, zur Lösung beizutragen - so kann sich das Problem nicht lösen.
Es wurden schon mögliche Ursachen genannt, die du jedoch einfach so ausschließt - und möglichst noch im nächsten Satz fragst, woran man das denn erkennen könnte.
Und ich glaub nicht, dass hier auch nur wirklich geil auf deinen Code ist, insofern seh ich dein Problem nicht. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
wolfjuli
Anmeldungsdatum: 06.03.2008 Beiträge: 50
|
Verfasst am: 22.03.2008, 18:39 Titel: |
|
|
Ich geb zu, dass es komisch klingen muss, dass ich zuerst um hilfe bitte, und sie dann ablehne, aber das problem ist, dass man in den meisten Foren von der Karotte zum T-Bonesteak kommt: Man stellt eine Frage, und bekommt eine Antwort die diesen Themenberiech zwar stark schrammt aber nicht trifft. Plötzlich wird nur mehr darüber diskutiert. Irgendwie freut es mich aber auch, dass mein Thema jetzt schon 2 Seiten umfasst. Hätte mir nicht gedacht, dass es so weit kommt
Den Quellcode meines Programms werde ich auch einfügen, wenn ihr so scharf darauf seit. Ich kenn euch so wie so nicht, weshalb es mir auch egal sein müsste wenn ihr ihn habt.
Also werde ich jetzt meine Frage umformulieren: Ist es einem von euch schon mal passiert, dass ein Programm im Übersetzer makellos funktionierte und der Compiler auch keine Probleme anzeigte, jedoch das fertig kompilierte Programm nicht funktionierte?
LG Julian _________________ Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.03.2008, 11:12 Titel: |
|
|
wolfjuli hat Folgendes geschrieben: |
Den Quellcode meines Programms werde ich auch einfügen, wenn ihr so scharf darauf seit. Ich kenn euch so wie so nicht, weshalb es mir auch egal sein müsste wenn ihr ihn habt.
|
genau deswegen würde ich mir sorgen machen, mehr als bei leuten die ich kenne _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.03.2008, 11:58 Titel: |
|
|
Die meisten Leute, die ich persönlich kenne, würden mich bei dem Wort "Quellcode" eher verstört ansehen ... _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.03.2008, 18:22 Titel: |
|
|
vor allem, wenn man es deutsch ausspricht... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
wolfjuli
Anmeldungsdatum: 06.03.2008 Beiträge: 50
|
Verfasst am: 24.03.2008, 22:20 Titel: |
|
|
Also jetz wirds richtig niveaulos. Aber genau das hab ich gemeint mit dem Leiden der Foren _________________ Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. |
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 24.03.2008, 23:10 Titel: |
|
|
Hi,
*auch mal zu Wort melden*
Eine deiner Fragen:
"Kann es sein das Ihn der Call Interrupt stört?"
Nicht direkt. Alle QB-Versionen die Interrupt(X) anbieten können mit diesem auch umgehen. Entscheidender ist da viel mehr was "hinter" dem entsprechendem Interrupt steht.
Wenn du "normale" Fehler in einer EXE-Datei hast die durch irgendeinen QB-Befehl hervorgerufen werden, erhälst du dementsprechend auch eine Text-Fehlermeldung von deiner Exe. (z.B. DateiPfade nicht gefunden, Überläufe, Division durch 0, Zugriffe auf Arrayindizes ausserhalb des Arraybereichs und und und)
Sobald aber Windows selber eine Fehlermeldung ausgibt, kann man meistens davon ausgehen das es ein schwerwiegenderer Fehler ist.
Diese werden im Normalfall durch folgende Dinge verursacht:
- Zugriff auf Bereiche des konventionellen RAM's den die EXE nicht reserviert hat. Dies kann bei PEEK/POKE-Anweisungen der Fall sein.
- Falls man Assembler "eingebettet hat" und dieses Assemblerprogramm durch eine Fehlprogrammierung z.B. per JMP an Adressen springt die nicht zum Programm gehören.
- Man Interrupte benutzt und sie "unvorhergesehen" auffruft. (z.B. falsche Parameter in den Registern...)
Da du nach Interrupten gefragt hast als mögliche Ursache, würde ich auf den ersten Blick also behaupten das dort der Fehler zu finden ist.
Von daher wäre die Antwort auf folgende Frage interessant:
Benutzt du CALL INTERRUPT nur für deine Maussteuerung oder auch für andere Funktionen?
Wenn es nur die Maussteuerung ist, würde ich mal versuchen diese für einen Test ersteinmal zu deaktivieren und das Programm dann als exe zu testen.
Tritt der Fehler immernoch auf, wars das nicht.
Benutzt du die Interrupte auch zum Durchsuchen der Verzeichnisse (INT &H21) oder zum Zugriff auf die Festplatte(&H13) kann es dort auch zu einem Fehler kommen.
Wenn du z.B. Datei- und Ordnernamen ausliest per Interrupt &H21, mußt du diese für QB in das 8.3-Format umwandeln.
Der Int &H13 ist unter Windows>98 für Dos-Programme standardmäßig gesperrt.
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
|
wolfjuli
Anmeldungsdatum: 06.03.2008 Beiträge: 50
|
Verfasst am: 24.03.2008, 23:43 Titel: |
|
|
Vorerst danke, dass einer mal eine Antwort auf die Frage gibt, die ich auch gestellt habe *aufdenbodenknie*.
Ich verwende den Interrupt-Befehl nur für die Maus und das problem ist, ich kann die Maussteuerung nicht herausnehmen, da genau diese den Fehler verursacht. Es geht hierbei darum, dass alle Unterverzeichnise in einem Verzeichnis aufgelistet werden. Durch eine FOR-Schleife wird jede einzelne Ausgabe überprüft, ob die Maus sich gerade in diesem Bereich befindet:
(Ich muss im Vorhinein sagen, dass ich gerade am falschen Rechner sitze und dieses Beispiel aus dem Kopf schreibe)
Code: | for a = 1 to 30
if maus(a, 1, a, 15, 0) = 1 then 'Selbstprogrammierte Function, die die maus abfragt, und 1, falls erfüllt, zurückgibt
color 7,0
locate a, 1: print ordner$
color 0, 7
else
color 0, 7
locate a, 1: print ordner$
end if
next a |
kurz zur Mausroutine:
die sieht ungefähr so aus:
Code: | function maus(anfy, anfx, endy, endx, button)
einreg.bx = 3
call interrupt(&h33, einreg, ausreg)
x = ausreg.cx / 8 + 1
y = ausreg.dx / 8 + 1 'kA warum die beiden durch 8 get. werden, aber es funzt
if anfy <= y and endy >= y and anfx <= x and endx >= x and ausreg.bx = button then maus = 1 else maus = 0
end function |
So ungefähr siehts aus. Und wie gesagt, im Übersetzer läufts, Kompilieren ohne Fehler und im Hauptprogramm siehts so aus:
Bei klick schließt sich entweder das Programm oder man bekommt eine Windows Fehlermeldung, von wegen NTVD.EXE hätte einen Fehler verursacht und muss beendet werden (Zum anklicken: Schließen oder Ignorieren, wobei bei Ignorieren schließt sich das Programm trotzdem )
Sollte das nicht eintreten werden die Ordner angezeigt, der "Hover" funzt aber nicht, nämlich werden alle einträge Markiert, und nicht mehr zurückgesetzt. Sollte man klicken, wechselt das Prog in alle möglichen unterordner, bis es "ansteht" wechselt dann wieder ziemlich weit hinaus, und wieder hinein...
Den Quelltext werde ich am Dienstag Abend einfügen, da ich dann wieder am richtigen Rechner sitze.
LG
Julian _________________ Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.03.2008, 23:54 Titel: |
|
|
Zitat: | Also jetz wirds richtig niveaulos | wir müssen diesen knochenharten (ehrenamtlichen!) job ja auch irgendwie durchstehen... ich ich spreche bei meinem letzten post eher aus erfahrung, das ist kein witz
Code: | call interrupt(&h33, einreg, ausreg)
x = ausreg.cx / 8 + 1
y = ausreg.dx / 8 + 1 'kA warum die beiden durch 8 get. werden, aber es funzt happy |
Wo wird ausreg definiert?
Die Division durch 8 ist übrigens nur im Textmodus nötig (da du nicht mit pixeln, sondern mit chars arbeitest). _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
wolfjuli
Anmeldungsdatum: 06.03.2008 Beiträge: 50
|
Verfasst am: 24.03.2008, 23:58 Titel: |
|
|
Zitat: | Wo wird ausreg definiert?
Die Division durch 8 ist übrigens nur im Textmodus nötig (da du nicht mit pixeln, sondern mit chars arbeitest). |
Das mit der Division weiß ich, ich arbeite nur im Textmodus. (Vor allem aus dem Grund, da windows sonst in den Vollbild-Modus wechseln würde und Vista das nicht unterstützt)
Ausreg wird in dem Hauptmodul des Progs deffiniert, nach dem Standard-Type für maus. Einreg als auch ausreg werden wie folgt dimensioniert:
DIM EinReg as RegTyp
DIM AusReg as RegTyp
Der type sieht ungefähr so aus:
Type RegTyp
ax as integer
bx as integer
...
end type
PS: Wegen dem "Quellcode": man wird wohl nicht so pingelig sein, oder? So lange man weiß was gemeint ist, wirds wohl reichen. _________________ Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. |
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 25.03.2008, 00:01 Titel: |
|
|
Ah,
wie Jojo im wichtigen Teil seines Posts schon richtig fragt:
"Wie sieht der Type aus, deiner Variable einreg, ausreg"
Es kann sein das du dort die falsche Deklaration benutzt.
Je nachdem ob du Interrupt oder InterruptX benutzt, werden unterschiedliche, bzw. anders angeordnete Register benötigt.
Wenn diese falsch deklariert sind, werden die Register falsch übergeben an den Mausinterrupt. Dadurch kann es zum Beispiel passieren das die Maus "Klicks ausführt" obwohl gar keine gemacht wurden.
MFG A.K.
EDIT: Nachtrag, genau den Type meine ich. Kannst du ihn vollständig posten? (am besten per Post-Edit) _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
|
wolfjuli
Anmeldungsdatum: 06.03.2008 Beiträge: 50
|
Verfasst am: 25.03.2008, 00:08 Titel: |
|
|
Ich habe es eigentlich aus dem Programm "DANKRAD.BAS" (zu finden in Qbasic.de >Downloads>maus&tastatur > maus.zip)
Code: | TYPE RegTyp
AX AS INTEGER
BX AS INTEGER
CX AS INTEGER
DX AS INTEGER
BP AS INTEGER
SI AS INTEGER
DI AS INTEGER
FLAGS AS INTEGER
DS AS INTEGER
es AS INTEGER
END TYPE
DIM Einreg AS RegTyp
DIM AusReg AS RegTyp |
genau so siehts in meinem Prog aus. Aber ich verwende nur Interrupt. Wie Ist es außerdem möglich dass es dann im Übersetzer funktioniert, aber als EXE nicht mehr? _________________ Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 25.03.2008, 00:18 Titel: |
|
|
wolfjuli hat Folgendes geschrieben: | Also jetz wirds richtig niveaulos. Aber genau das hab ich gemeint mit dem Leiden der Foren |
wolfjuli hat Folgendes geschrieben: | dass einer mal eine Antwort auf die Frage gibt, die ich auch gestellt habe *aufdenbodenknie*. |
wolfjuli hat Folgendes geschrieben: | Wie Ist es außerdem möglich dass es dann im Übersetzer funktioniert, aber als EXE nicht mehr? |
Ich glaube es reicht so langsam. Der Thread wird jetzt geschlossen, da der Fragesteller bei seinem eigenen Anliegen wenig kooperativ ist und das hier zu einer unsachlichen Schelte der Forengemeinde ausartet. Ich hatte den Thread bereits geschlossen, aber AK hatte ihn in Absprache wieder eröffnet, um dem Nutzer "wolfjuli" noch mal eine Gelegenheit zu geben, sein Verhalten hier anzupassen. Diese Gelegenheit hat er nicht genutzt. Stattdessen stellt er ständig die gleichen Fragen und reagiert auf die Anfragen der Forenmitglieder mit Trotz als wenn es deren Versagen wäre, dass sein Programm offensichtlich fehlerhaft oder zumindest problembehaftet ist. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|