|
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 |
s-m-n
Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 08.07.2006, 18:48 Titel: [solved] Programm bleibt hängen |
|
|
Hi,
ich hab hier folgendes Programm:
Code: |
rem Antenne v1 für Windows und Linux. Geschrieben im Juli 2006 von Simon Niederwinkler.
rem Danke an ytwinky und Volta f?r die schnelle und kompetente Hilfe, siehe
rem http://forum.qbasic.at/viewtopic.php?t=2817&sid=b2b4701104968c41c17d762c250c5a74
SELECT CASE LCASE$(COMMAND$(1))
CASE "r": goto 10
CASE "": goto 1
CASE ELSE: PRINT "Ung?ltige Option!":sleep
END SELECT
1 kill "index.php"
shell "wget -t 0 -q http://www.antenne-salzburg.at/cms/index.php"
10 Dim As Integer Zeilen, f, i
Dim As String Zeile(2550), s
on error goto fehler
f = FreeFile
OPEN "index.php" FOR INPUT AS #f
WHILE NOT EOF(f)
LINE INPUT #f, Zeile(Zeilen)
Zeilen+=1
WEND
Close #f
goto 15
fehler: print:print:print "Download fehlgeschlagen - ?berpr?fen Sie, ob wget korrekt installiert wurde,":print "in der Firewall freigegeben ist und eine Verbindung zum Internet besteht.":print:print "Falls das Programm mit dem Paramter r aufgerufen wurde, ob die Datei 'index.php' existiert.":goto 25
15 if command$ = "r" then cls else cls:goto 20
print "ACHTUNG: Die Datei wurde nicht aktualisiert, lediglich neu eingelesen!"
20 x$ = Zeile(23)
y$ = MID$(x$, 38)
z$ = rtrim(y$, "</strong>")
print
print "Jetzt auf der Antenne: "; z$
if command$ = "r" then goto 25 else goto 21
21 rem Logdatei-Ausgabe. Leicht modifizierter Code von Stormy, siehe http://forum.qbasic.at/viewtopic.php?t=2720&sid=8230d23c24e90257ea4401120a4695e9
OPEN "antenne.log" FOR APPEND AS #1
PRINT #1, "Am "; date$; " um "; time$; " lief "; z$; " auf Antenne Salzburg."
CLOSE #1
25 sleep |
Dieses nette Proggi liest den gerade gespielten Titel meines Lieblings-Radiosenders aus und zeigt ihn an, indem es die Startseite des Senders aus dem Netz holt und die betreffende Zeile anzeigt. Mit der Option "r" lässt sich der Download der jeweils aktuellen Homepage unterbinden und der Titel des letzten Downloads anzeigen. Wenn die Datei index.php (was verschiedene Ursachen haben kann) oder wget fehlt oder keine Verbindung zum Internet besteht, sollte eigentlich eine Fehlermeldung angezeigt werden (on error goto fehler).
Stattdessen bleibt das Programm unter Linux einfach hängen, wenn ein Fehler auftritt; wenn keine Fehler auftreten, läuft es auch einwandfrei ab. Auch unter Win funzt es seltsamerweise ohne Probleme. Ich verwende unter beiden Betriebssystemen FBC 0.16. Ich habs mit Win gecoded, weil ich da die IDE nutzen kann.
Kann wir jemand weiterhelfen? Vielen Dank im Voraus!
Gruß s-m-n
Zuletzt bearbeitet von s-m-n am 09.07.2006, 16:34, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 08.07.2006, 21:23 Titel: |
|
|
Hi s-m-n,
[Edit]
Sry s-m-n, sowas kommt vom OffLine-schreiben, soll nicht wieder vorkommen
bei meiner Sig ist es kein Vergnügen, für diesen Code als Helfer genannt zu werden..
Zuviele teils unnötige, um nicht zu sagen überflüssige GOTO's, sorgen dafür, daß die
Übersicht verloren geht..
Selbst der Programmierer(also du)blickt nicht mehr durch!
Ich nehme es linux daher nicht übel, wenn es das Programm nicht ausführt.
Ein gutes Beispiel dafür, GOTO in Programmen nicht zu verwenden!
Mit welchen Optionen hast du das Programm denn kompiliert?
Was bedeuten sie?
(Ich 'kann', wie bereits erwähnt, kein linux..)
[Edit]
Ich habe dein Programm mal in für mich lesbare Form gebracht..
Kann sein, daß der Fehler dadurch schon raus ist.
(Es ist nicht egal, ob ich Command$ prüfe, oder Command$(1)..)
Ich habe den Code nicht getestet, weil ich Antenne Salzburg hier nicht empfange
Kuckma, ob du damit was anfangen kannst
Code: | Option Escape
rem Antenne v1 für Windows und Linux. Geschrieben im Juli 2006 von Simon Niederwinkler.
rem Danke an ytwinky und Volta f?r die schnelle und kompetente Hilfe, siehe
rem http://forum.qbasic.at/viewtopic.php?t=2817&sid=b2b4701104968c41c17d762c250c5a74
x$=LCASE$(COMMAND$(1))
If x$="" Then
kill "index.php"
shell "wget -t 0 -q http://www.antenne-salzburg.at/cms/index.php"
End If
If x$<>"" And x$<>"r" Then
PRINT "Ung?ltige Option!"
sleep
End If
Dim As Integer Zeilen, f, i
Dim As String Zeile(2550), s
on error goto fehler
f = FreeFile
OPEN "index.php" FOR INPUT AS #f
WHILE NOT EOF(f)
LINE INPUT #f, Zeile(Zeilen)
Zeilen+=1
WEND
Close #f
if x$= "r" then
cls
print "ACHTUNG: Die Datei wurde nicht aktualisiert, lediglich neu eingelesen!"
End If
x$ = Zeile(23)
y$ = MID$(x$, 38)
z$ = rtrim(y$, "</strong>")
print
print "Jetzt auf der Antenne: "; z$
if x$<>"r" then
rem Logdatei-Ausgabe. Leicht modifizierter Code von Stormy, siehe http://forum.qbasic.at/viewtopic.php?t=2720&sid=8230d23c24e90257ea4401120a4695e9
OPEN "antenne.log" FOR APPEND AS #1
PRINT #1, "Am "; date$; " um "; time$; " lief "; z$; " auf Antenne Salzburg."
CLOSE #1
End If
Sleep
End
fehler: ? "\n\n\nDownload fehlgeschlagen - ?berpr?fen Sie, ob wget korrekt installiert wurde,":
print "in der Firewall freigegeben ist und eine Verbindung zum Internet besteht.\n"
print "Falls das Programm mit dem Paramter r aufgerufen wurde, ob die Datei 'index.php' existiert."
Sleep
End |
UND POSTE BITTE mal die ominöse Zeile 23, denn die ist ja das Zentrum der Begierde..
(Besser noch Zeile 20..25)
Weißt du, was 'z$ = rtrim(y$, "</strong>")' macht?
Und wenn die auf einmal statt des veralteten '</strong>' das modernere '</b>' verwenden?
(Geht schneller, bewirkt dasselbe..)
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 09.07.2006, 16:37, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
s-m-n
Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 09.07.2006, 15:17 Titel: |
|
|
Ich glaube, du hast da was verwechselt. Mein Nick ist s-m-n und nicht psygate.
Zitat: | bei meiner Sig ist es kein Vergnügen, für diesen Code als Helfer genannt zu werden..
|
Wie meinst du das? Soll ich genauer hinschreiben, was ich von dir hab? Ich hab mir halt gedacht, wenn ihr mir schon dabei helft, wäre es fair, eure Namen zu nennen.... Im (strukturierten) Programmieren bin ich halt noch nich so gut. Vielleicht hätte ich darauf hinweisen sollen...
Zum Kompilieren hab ich unter Linux keine Optionen verwendet ("fbc sourcefile.bas").
Und den Durchblick hab ich auch noch, auch mit den vielen GOTOs.
Zitat: | Ich habe den Code nicht getestet, weil ich Antenne Salzburg hier nicht empfange |
Auch wenn du AS bei dir nicht empfangen kannst, könntest du trotzdem den Titel des gerade gespielten Songs abrufen (da das Proggi das Inet nutzt).
Zitat: | Weißt du, was 'z$ = rtrim(y$, "</strong>")' macht? |
Sicher, es entfernt "</strong>" von der rechten Seite des Strings y$ und schreibt das Ergebnis in die Variable z$. Oder bezweifelst du, dass ich mir den Einsatz dieses Befehls gut überlegt hab? Die Anwendung dieses Befehls hat mir die FreeBASIC-Befehlsreferenz beigebracht.
Und wenn die </b> statt </strong> verwenden, stört es mich auch nicht, wenn ich den Code ändern und das Trumm neu kompilieren muss.
Die Zeilen 20 bis 25 lauten (zum jetzigen Zeitpunkt):
20 </tr>
21 <tr>
22 <td id="middleheader">
23 <div class="musicticker">
24 Jetzt auf der Antenne:<br/ > <strong>Eros Ramazzotti - Una Storia Importante</strong>
25 </div>
[kommentar] Ich hasse Eros Ramazzotti! [/kommentar]
Der Titel steht deshalb in Zeile 24, weil FreeBASIC der ersten Zeile die Nummer 0 verpasst; also muss im Programm die Zeile 23 verarbeitet werden.
Dein Code weist im Übrigen unter Linux die selben Symptome auf wie der meine..... |
|
Nach oben |
|
|
s-m-n
Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 09.07.2006, 16:33 Titel: |
|
|
Gute Nachrichten: Es hat sich erledigt! Mir ist aufgefallen, dass ich's unter Win immer mit der IDE kompiliert hab. Diese verwendet - Blick in die Einstellungen - standardmäßig den Parameter -ex für fbc. Unter Linux hab ich das vorher natürlich nicht gemacht - weil ich das von der IDE nicht gewusst hab. Aber mit dem -ex geht's einwandfrei, auch unter Linux!
Danke für eure Bemühungen!
Gruß s-m-n |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 09.07.2006, 16:53 Titel: |
|
|
Hi,
s-m-n hat Folgendes geschrieben: | Zitat: | bei meiner Sig ist es kein Vergnügen, für diesen Code als Helfer genannt zu werden.. |
Wie meinst du das? Soll ich genauer hinschreiben, was ich von dir hab? | Sig ist die Abkürzung für Signatur
Und in der Meinigen steht nun mal, daß ich ein besonderes Verhältnis zu 'GOTO' habe..
..und das ist kein Gutes!
Also mußte ich zu dem Programm zwangsläufig etwas sagen
Nun zum Programm: Das mit den Optionen ist eine ganz fiese Geschichte..
..weil sie nur auftauchen, wenn sie geändert werden. Ich kenne das von '-s gui' zur Genüge
Ich müßte das von mir geänderte Programm dann nur mit -ex kompilieren und es läuft..
..das freut mich
Zur Numerierung: Wenn duschreibst, hast du dieselbe Numerierung..
..oder du schiebst Zeilen+=1 einfach vor die Input-Anweisung..
..oder bei OBI..
(es gibt noch mehr Möglichkeiten)
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
s-m-n
Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 09.07.2006, 18:57 Titel: |
|
|
Hi,
ja, das Sig hab ich schon verstanden. Aber den Inhalt wohl erst jetzt...
Sorry. Dann muss es wohl heißen:
Code: | rem Danke an MisterD, ytwinky und Volta f?r die schnelle und kompetente Hilfe bei der while..wend-Schleife, siehe
rem http://forum.qbasic.at/viewtopic.php?t=2817&sid=b2b4701104968c41c17d762c250c5a74
rem Hinweis: Die vielen GOTOs stammen von MIR und keinem der genannten Helfer!
|
Ist's dir so recht?
Das goto scheint bei den Profis ja nicht gerade beliebt zu sein, ein Bekannter von mir schimpft da auch immer, wenn er meine Codes liest....
Gruß s-m-n
Zuletzt bearbeitet von s-m-n am 09.07.2006, 19:04, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 09.07.2006, 19:02 Titel: |
|
|
die session ID kannste aus dem link sicher raus lassen einfach das &sid=blalba wegschneiden, sieht dann wesentlich kompetenter aus.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
s-m-n
Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 09.07.2006, 19:05 Titel: |
|
|
Ja, das stimmt. Werd ich auch machen. Danke für den Hinweis. |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 09.07.2006, 19:16 Titel: |
|
|
s-m-n hat Folgendes geschrieben: | Das goto scheint bei den Profis ja nicht gerade beliebt zu sein, ein Bekannter von mir schimpft da auch immer, wenn er meine Codes liest.... | Schöne Grüße an deinen Bekannten, scheint ein netter Mensch zu sein
Ich freue mich natürlich, wenn ich in deinem Programm genannt werde, aber wie MisterD schon sagt, ein allgemeiner Hinweis reicht (mir) völlig aus..
..wenn das Ding kompiliert ist, sieht das eh keiner mehr..
Oder willst du zum Programm noch meine Lebensgeschichte haben..
Wer den Quelltext liest, interessiert sich wahrscheinlich weniger für die Entstehungsgeschichte.
Diese wiederum gehört in die allseits beliebte Programm-Dokumentation.
(Damit meine ich nicht eine 3-5 Zeilen umfassende ReadMe.1st oder so)
Ich vermute aber, daß sie bei diesem Projekt sowieso entfällt
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
s-m-n
Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 10.07.2006, 10:47 Titel: |
|
|
Zitat: | Oder willst du zum Programm noch meine Lebensgeschichte haben.. |
Nein, danke. Aber ich hab halt gedacht, es wäre nicht verkehrt, wenn das ganze wenigstens etwas nachvollziehbar ist, aber das gehört wirklich in die readme, wie du schon gesagt hast. Ob sie entfällt, weiß ich nicht, weil ich schon in Erwägung gezogen hab, das ganze unter der GPL lizenziert (hoffentlich hast du nix dagegen) an Antenne Salzburg zu schicken. Mal sehen, weil ich die Sources von Wget auch mit abpacken muss, die EXE, die Linux-Datei, eine Readme, ach gott, ist das ein Haufen Glump....
Die Hinweise hab ich halt erst mal im Quellcode gesetzt, weil ich bei vielen meiner Programme (asdial, hangup, timer, asdialconfig, ....) gar keine Readme hab. Die hab ich nur gemacht, um mir das Leben etwas zu erleichtern... naja, egal.
Gruß s-m-n |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 10.07.2006, 12:42 Titel: |
|
|
s-m-n hat Folgendes geschrieben: | (hoffentlich hast du nix dagegen) | Nö, warum sollte ich
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
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.
|
|