Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Probleme beim Compilieren
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 12.03.2008, 17:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 12.03.2008, 18:10    Titel: Antworten mit Zitat

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. Zunge rausstrecken
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
Benutzer-Profile anzeigen Private Nachricht senden
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 22.03.2008, 17:39    Titel: Antworten mit Zitat

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. grinsen Hätte mir nicht gedacht, dass es so weit kommt happy

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.03.2008, 10:12    Titel: Antworten mit Zitat

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 lachen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 23.03.2008, 10:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.03.2008, 17:22    Titel: Antworten mit Zitat

vor allem, wenn man es deutsch ausspricht...happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 24.03.2008, 21:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 24.03.2008, 22:10    Titel: Antworten mit Zitat

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

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 24.03.2008, 22:43    Titel: Antworten mit Zitat

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 happy
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 happy)

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.03.2008, 22:54    Titel: Antworten mit Zitat

Zitat:
Also jetz wirds richtig niveaulos
wir müssen diesen knochenharten (ehrenamtlichen!) job ja auch irgendwie durchstehen... cool ich ich spreche bei meinem letzten post eher aus erfahrung, das ist kein witz Zunge rausstrecken

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 24.03.2008, 22:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 24.03.2008, 23:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 24.03.2008, 23:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 24.03.2008, 23:18    Titel: Antworten mit Zitat

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

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
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.

 Impressum :: Datenschutz