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:

[solved] Programm bleibt hängen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 08.07.2006, 18:48    Titel: [solved] Programm bleibt hängen Antworten mit Zitat

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



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.07.2006, 21:23    Titel: Antworten mit Zitat

Hi s-m-n,
[Edit]
Sry s-m-n, sowas kommt vom OffLine-schreiben, soll nicht wieder vorkommen verlegen
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 lachen
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 09.07.2006, 15:17    Titel: Antworten mit Zitat

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

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..... traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 09.07.2006, 16:33    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 09.07.2006, 16:53    Titel: Antworten mit Zitat

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 cool
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 grinsen
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 zwinkern
Ich müßte das von mir geänderte Programm dann nur mit -ex kompilieren und es läuft..
..das freut mich grinsen
Zur Numerierung: Wenn du
Code:
Dim Zeilen=1, f, i
schreibst, 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 09.07.2006, 18:57    Titel: Antworten mit Zitat

Hi,

ja, das Sig hab ich schon verstanden. Aber den Inhalt wohl erst jetzt... grinsen
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? mit den Augen rollen

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

Gruß s-m-n


Zuletzt bearbeitet von s-m-n am 09.07.2006, 19:04, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 09.07.2006, 19:02    Titel: Antworten mit Zitat

die session ID kannste aus dem link sicher raus lassen zwinkern 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
Benutzer-Profile anzeigen Private Nachricht senden
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 09.07.2006, 19:05    Titel: Antworten mit Zitat

Ja, das stimmt. Werd ich auch machen. Danke für den Hinweis. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 09.07.2006, 19:16    Titel: Antworten mit Zitat

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.... happy
Schöne Grüße an deinen Bekannten, scheint ein netter Mensch zu sein grinsen
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 grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 10.07.2006, 10:47    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 10.07.2006, 12:42    Titel: Antworten mit Zitat

s-m-n hat Folgendes geschrieben:
(hoffentlich hast du nix dagegen)
Nö, warum sollte ich grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.07.2006, 16:05    Titel: Antworten mit Zitat

ytwinky hat Folgendes geschrieben:
Oder willst du zum Programm noch meine Lebensgeschichte haben..

Gute Idee, ein Steckbriefthread! grinsen Leg los! happy
_________________

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   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
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