Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 18.04.2022, 19:44 Titel: wxFBE kann Programm nach dem Compilieren nicht ausführen |
|
|
Hallo,
ich habe ein ganz normales Programm geschrieben, das ist eine Datei die in jeden Record nur ein String-Feld mit 20 Byte öffnet um Werte einzugeben, die ich als Parameter in mehreren Programme benötige.
Ich kann dieses Programm mit wxFBE fehlerfrei compilieren aber dann mit der Funktion "ausführen" nicht starten. Es öffnet sich kurz die Konsole schließt sich aber sofort wieder.
Wenn ich es mit der Funktion "Schnellstart" starte funktioniert es. Dann läuft das Programm funktionsmäßig auch richtig.
Die exe-Datei kann ich auch problemlos direkt aufrufen.
Aber eines war seltsam: nach einem Lauft und normalem Abschluss meldete Windows 10, dass das Programm nicht kompatibel wäre. Ich ließ Windows dann die richtige Einstellung suchen, testete und es war in Ordnung. trotzdem hat sich am Verhalten nichts geändert auch kam irgendwann die Frage von Windows wegen der Kompatibilität auch wieder.
Es gibt nocht eine andere Besonderheit: ich habe ein Menüprogramm das alle ausführbaren Programme mit Nummern versehen listet und dann fragt welche Nummer ich ausführen möchte. Das funktioniert für alle anderen Programme nur für dieses nicht! Wenn ich die Programmnummer eingebe wird sie im IF-Staement das der entsprecheden RUN-Befehl enthält nicht erkannt und es kommt die Fehlermeldung "Falsche Eingabe".
Nun dachte ich, dass die Datei durch irgend ein Alien einen Fehler bekommen hat und begann das Programm im Editor in eine neue Datei abzuschreiben doch ich kan nicht weit. Bei der Eingabe der DIM-Befehle begannen die gleichen Schwierigkeiten wie gehabt. Nach ein paar versuchen konnte ich die Integervariablen vollständig definieren aber bei den String-Variablen war dann Schluss.
Ich hab de´ie Abschrift beigelegt:
Code: |
' SINXSETUP.BAS
' Version 1.0.1
' Setup-Programm zur Eingabe der Basisdaten für die
' Konsoldimensionierung
'
#INCLUDE once "admin.bi"
#Include Once "Windows.bi"
'
Konsolentitel ("ERSTEINRICHTUNG DES SINX.DAT")
changefontsize(0, 18, "Lucida Console")
WIDTH 99,37
CLS (0)
'-----------------------------------------------------------------------------------------
'
' Programmbeginn
'
DIM AS INTEGER iZnr, iC, iInp, iPos, I
DIM AS STRING iWeiter, sER, sMR, sTXT
PRINT "GUT"
getkey
|
Die Buchstaben "i" und "s" habe ich zu beginn der Variablen gestzt, um nicht immer prüfen zu müssen ob es sich um Integer, String usw. handelt (hab wo gelesen, dass das Ungarische methode oder so ähnlich heißt).
Ich hatt dieses Problem bei noch keinem anderen Programm und habe doch schon ca. 15 geschrieben.
Ich weiß nicht ob ich mich vollständig genug ausgedrückt habe.
Hab mich im Forum geirrt, bitte kann wer das in Allgemeine Fragen zu FreeBasic verschieben? Danke _________________ Grüße
kilix |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 18.04.2022, 20:34 Titel: |
|
|
Ich schieße ein wenig ins Blaue - welche Compileroptionen hast du eingestellt?
Ansonsten ist der Inhalt der admin.bi unklar. Ändert es etwas, wenn du dieses Include auskommentierst? Oder, anders herum - funktionieren andere Programme, in denen admin.bi eingebunden ist? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 18.04.2022, 20:45 Titel: |
|
|
Und noch ein anderer Vorschlag, wenn auch ein sehr ungewöhnlicher: Versuche es mal mit anderen Variablennamen. Mein allererster Post in diesem Forum bezog sich auf einen seltsamen Assemblerfehler, der wohl mit dem Prozedurnamen zusammenhing und den mir nie jemand erklären konnte. In deinem Fall sieht es ja anders aus, weil kein Fehler geworfen wird, aber wer weiß ... _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 18.04.2022, 21:00 Titel: |
|
|
Die Compileroption ist bei allen Programmen: -s console
Die admin.bi verwende ich in allen Programmen und für dieses Programm gibt es keine Fuktion oder Sub die ich nicht auch in anderen Programmen verwende
Variablennamen: die meisten der verwendeten Anmen verwende ich auch in anderen Programmen. Hab es auch mit anderen Namen probiert. Das hat tlw. funktioniert und nachdem ich auf den richtigen Namen änderte funktionierte der auch. Allerdings beim letzten Namen, den ich in vielen Programmen verwende (sTXT) hatte ich keine Erfolg.
Ich werde die Variablenname alle ändern vielleicht bleibt da irgendwo was hängen wenn man immer die gleichen verwendet (???)
Oh ja, da fällt mir ein, es gab schon eine Fehlermeldung im wxFBE und zwar kommt die wenn ich nach dem Compilieren "ausführen" wähle, nicht aber bei "Schnellstart":
"F:\FreeBASIC\./fbc" "F:\ADMIN\Programme\SINXSETUP.BAS" -s console"
Kann man den Thread zu FreeBasic verschieben? _________________ Grüße
kilix |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 18.04.2022, 21:16 Titel: |
|
|
Danke nemored! Du hast mich mit den Fragen auf den Weg gebracht! Es waren entweder:
- Variable die noch aus einem anderen Programm, das mir als Basis diente, stammten - die hab ich gelöscht
- die Namen der verbliebenen Variablen - die habe ich geändert
- oder es war der Programmname SINXSETUP - vielleicht hat das Wort "SETUP" gestört, hab es aus "SINXSET" geändert.
Was auch immer es davon war, jetzt funktioniert es! _________________ Grüße
kilix |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 18.04.2022, 21:17 Titel: |
|
|
Zitat: | Kann man den Thread zu FreeBasic verschieben? |
Das müsste Sebastian machen. Passiert sicher noch.
Code: | "F:\FreeBASIC\./fbc" "F:\ADMIN\Programme\SINXSETUP.BAS" -s console" |
ist keine Fehlermeldung, sondern nur die Statusmeldung über den Kompiliervorgang.
Schau mal in den Ordner F:\ADMIN\Programme; da sollte ja dann eine SINXSETUP..exe liegen - kannst du die starten? (Oder existiert sie gar nicht? Dann wäre das auch eine Erklärung für die fehlende RUN-Option.) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 18.04.2022, 21:26 Titel: |
|
|
Zitat: | - oder es war der Programmname SINXSETUP - vielleicht hat das Wort "SETUP" gestört, hab es aus "SINXSET" geändert. |
Ein immer gern wieder auftretender Fehler ist: Wenn das Programm, an dem du arbeitest, gerade bereits läuft, geht der Compiliervorgang unter Windows schief (keine Schreibrechte auf ein gestartetes Programm). Manchmal versteckt sich das noch laufende Programm auch irgendwo im Taskmanager. Keine Ahnung, ob das in deinem Fall zutrifft - ein paar Symptome würde es jedenfalls erklären, unter anderem, warum der Schnellstart und der neue Dateiname funktionieren (falls es tatsächlich am neuen Dateinamen liegt). _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 18.04.2022, 21:28 Titel: |
|
|
1) die exe ist da und funktioniert
2) jetzt spinnt das nächste Programm, es ist eines der ersten die ich geschrieben habe.
Es ist ein ganz einfaches Menüprogramm mit 3 Variablen das die Programme listet die man über eine Nummer aufrufen kann. Auch hier funktioniert die exe und in wxFBE die Schnellstartfunktion - genau wie im ersten Fall.
Auch glaub ich nicht, dass es der Bibliothek liegt denn andere Programme die sie auch verwenden funktionieren. _________________ Grüße
kilix |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 18.04.2022, 21:36 Titel: |
|
|
Schau mal, ob das Programm im Taskmanager noch läuft. Wie gesagt alles nur Schuss ins Blaue, aber das ist der Punkt, in dem ich allen FreeBASIC-IDEs am wenigsten traue. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 18.04.2022, 21:49 Titel: |
|
|
Nachdem der Verdacht bestand, dass irgend ezwas im Zusammenhang mit diesem Programm im memory oder sonstwo hängen geblieben ist habe ich Windows neu gestartet und da kam die meldung:
SINXSETUP.EXE, Diese App verhindert das Herunterfahren.
Ich habe Windows trotzdem beendet aber nach dem neustart kaonnte ich weder dieses noch das zuletzt erwähnt Menü-Programm aus wxFBE heraus mit "ausführen" starten. Wohl aber mit der Schnellstartfunktion und auch die exe.
Nachdem ich das Menü-Programm aus aus einem anderen Programm heraus nicht starten kann offenbar der RUN-Befehl nicht durchgeführt werden. Das ist genauso wie ich zuerst SINXSETUP nicht aus dem Menüprogramm starten konnte.
Habe jetzt das Menü-Programm umbenannt und jetzt konnte ich es richt mit "ausführen" aufrufen. Da bleibt , vielleicht weil ich da viel geändert habe und diese beiden Programme immer wieder mit wxFBE aufgerufen habe etwas irgenwo hängen, nur hab ich keine Ahnung wo... _________________ Grüße
kilix |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 18.04.2022, 21:53 Titel: |
|
|
Habe jetzt das Menü-Programm in wxFBE mit dem ursprünglichen Namen ohne Probleme aufrufen können.
Das ist schon mysteriös! _________________ Grüße
kilix |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 19.04.2022, 12:38 Titel: |
|
|
nemoreds Idee mit dem Taskmanager ist denke ich mal gar nicht so verkehrt. Wenn "Schnellstart" verwendet wird, wird von dem Programm eine FBTEMP+Zeitstempel Datei gemacht und die ausgeführt. Die ist natürlich immer eindeutig benannt. Das normale Ausführen will die Datei aber mit ihrem richtigen Namen ausführen. Sollte die vorherige Exe aber noch ausgeführt werden, kann es zu fehlern kommen. Also am besten immer zuerst in den Taskmanager schauen.
Variablennamen können manchmal auch zu Problemen führen, das gab es in der Vergangenheit ab und an. Vor allem, wenn die gewählten Namen irgendwelchen Assemblerregisternamen gleichen (glaube ich mich zumindest zu erinnern). Ob das aktuell immer noch ein Problem ist, weiß ich aber nicht. _________________ Meist inaktiv - über PNs werde ich benachrichtigt. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 19.04.2022, 13:16 Titel: |
|
|
Ich denke, ich habe einen Teil der die Ursache des Problems gefunden:
es lag in der Registry und zwar hier:
Computer\HKEY_USERS\S-1-5-21-2030479217-2684037126-3856974645-1001\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Dort waren genau die beiden Programme eingetragen die nicht funktioniert haben. Nachdem ich sie dort gelöscht habe hat zumindest das eine wieder unter seinem originalen Namen funktioniert. Das andere Program (das war das erste das nicht mehr funktionierte) funktioniert noch nicht. Da suche ich weiter, könnte ja noche eine kritische Stelle geben.
Edit: habe die Registry weiter durchsucht aber nichts neues mehr gefunden, die Ursache muss irgendwo anders liegen. _________________ Grüße
kilix |
|
Nach oben |
|
 |
hhr
Anmeldungsdatum: 15.07.2020 Beiträge: 111
|
Verfasst am: 19.04.2022, 15:21 Titel: |
|
|
Wenn der Dateiname einer exe 'setup' enthält, fordert Windows eine Bestätigung.
Das kann man im Explorer mit umbenennen ausprobieren.
Ich würde Datei-, Variablen- und Funktionsnamen so wählen, daß es keine Warnungen gibt. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 19.04.2022, 19:28 Titel: |
|
|
Danke für den Hinweis! Ich habe die nunmehr 3 Dateien umbenannt und jetzt laufen sie. Die mit dem SETUP im Namen lief nach der Löschung des Registry-Eintrags auch wieder - habe sie trotzdem umbenannt. Die beiden anderen laufen mit ihrem alten Namen nicht, mit dem neuen aber schon. Die müssen außerhalb der Registry irgendwo einen Eintrag haben.
Was alle 3 Programme gemeinsam haben ist eine Binary-Datei, die im Record nur ein 20stelligen Stringfeld enthält. On diese Datei habe ich Parameter gespeichert die ich in mehreren Programme benötige. Aber dazu kommt, dass ich sie sehr oft geändert und mit dem wxFBE compiliert und ausgeführt habe. Einige Zeit ging das gut aber dann war es auf einmal aus. _________________ Grüße
kilix |
|
Nach oben |
|
 |
|