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:

Interactive Programme

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 18.12.2007, 21:35    Titel: Interactive Programme Antworten mit Zitat

Gibt es einen Weg mit dem man folgendes machen kann?:

-Bei dem Drücken einer bestimmten Taste wird ein INPUT verlassen, der Text bleibt bestehen. Zum Beispiel beim wiederholten Drücken einer Taste wird das INPUT wieder aufgesucht, man kann jetzt zum Beispiel mit Enter bestätigen

-Es laufen mehrere Vorgänge nebeneinander und fügen sich zu einem Bildschirmbild zusammen. Zum Beispiel eine Textanzeige, eine INPUT-Anweisung und einmal die Uhrzeit.

Und was mich noch interessieren würde: wie kann ein QB-Programm auf das Internet zugreifen (ich kenne das in der MonFaQ)? Ich meine das so, dass man diese mit OPEN öffnen kann und wenn Chmod auf 777 stehen, diese auch bearbeiten kann.

Danke für Antworten lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 18.12.2007, 21:48    Titel: Re: Interactive Programme Antworten mit Zitat

Keks hat Folgendes geschrieben:
-Bei dem Drücken einer bestimmten Taste wird ein INPUT verlassen, der Text bleibt bestehen. Zum Beispiel beim wiederholten Drücken einer Taste wird das INPUT wieder aufgesucht, man kann jetzt zum Beispiel mit Enter bestätigen

Geht nicht mit INPUT, aber du kannst dir eine eigene FUNCTION oder SUB schreiben. Passt auch zu unterer Antwort.

Keks hat Folgendes geschrieben:
-Es laufen mehrere Vorgänge nebeneinander und fügen sich zu einem Bildschirmbild zusammen. Zum Beispiel eine Textanzeige, eine INPUT-Anweisung und einmal die Uhrzeit.

Dazu kannst du eine Schleife bauen, die der Reihe nach die gewünschten Operationen vornimmt:
Code:

'(Pseudocode)
Tue
  Zeige Uhrzeit An
  Frage Taste Ab
  Wenn Normale_Taste_Gedrueckt Dann Fuege Buchstaben An Den Eingabe-String An
  Wenn Backspace_Gedrueckt Dann Loesche Letzten Buchstaben des Eingabe-Strings
  Wenn Return_Gedrueckt Dann Beende Eingabe
  Zeige Eingabe-String An
  Mache Noch Andere Dinge
Bis Programm_Soll_Beendet_Werden

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



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

BeitragVerfasst am: 18.12.2007, 22:23    Titel: Re: Interactive Programme Antworten mit Zitat

Ich möchte noch kurz etwas zeigen, was man missverstehen kann zwinkern
Keks hat Folgendes geschrieben:
Und was mich noch interessieren würde: wie kann ein QB-Programm auf das Internet zugreifen (ich kenne das in der MonFaQ)? Ich meine das so, dass man diese mit OPEN öffnen kann und wenn Chmod auf 777 stehen, diese auch bearbeiten kann.

Danke für Antworten lächeln
Irgendwas stimmt da nicht mit deiner Erklärung zwinkern . Den Befehl chmod gibt es meines Wissens nach nur auf unixoden Betriebssystemen, darauf läuft allerdings kein QB. Ich schlussfolgere daraus zwei Möglichkeiten: Entweder du meinst mit chmod irgendwas anderes und du programmierst wirklich QB unter Windows, oder du programmierst FreeBasic unter einem *nix... Welche Theorie stimmt? zwinkern
Zitat:
-Es laufen mehrere Vorgänge nebeneinander und fügen sich zu einem Bildschirmbild zusammen. Zum Beispiel eine Textanzeige, eine INPUT-Anweisung und einmal die Uhrzeit.
Wenn ich es richtig verstanden habe, willst du, dass der Text automatisch weitergeführt wird und kein Zeilenumbruch stattfindet, oder? Falls ja, gäbe es zwei Möglichkeiten: Mit String-Variablen (das ist in QB alles, was man mit Buchstaben speichern kann) genügt es, wenn du am Ende einer Anweisung ein Semikolon ";" dahinterschreibst, also z. B.
Code:
PRINT "Bla";
PRINT "bla... und das in einer Zeile...";
Eine andere Möglichkeit wäre, den Cursor (also die Stelle, ab der Text angezeigt werden soll) an einer anderen Stelle zu verschieben. Dies erledigt man mit "Locate Y-Koordinate, X-Koordinate". Willst du, dass sich der Cursor z. B. nach ganz oben links bewegt, reicht ein
Code:
LOCATE 1, 1


Zum ersten Problem kann ich leider nicht helfen. Wie nemored schon sagte, mit INPUT geht das nicht. Da müsste man eine eigene Eingaberoutine schreiben...
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 18.12.2007, 22:38    Titel: Re: Interactive Programme Antworten mit Zitat

Manuel hat Folgendes geschrieben:
Ich möchte noch kurz etwas zeigen, was man missverstehen kann zwinkern
Keks hat Folgendes geschrieben:
Und was mich noch interessieren würde: wie kann ein QB-Programm auf das Internet zugreifen (ich kenne das in der MonFaQ)? Ich meine das so, dass man diese mit OPEN öffnen kann und wenn Chmod auf 777 stehen, diese auch bearbeiten kann.

Danke für Antworten lächeln
Irgendwas stimmt da nicht mit deiner Erklärung zwinkern . Den Befehl chmod gibt es meines Wissens nach nur auf unixoden Betriebssystemen, darauf läuft allerdings kein QB. Ich schlussfolgere daraus zwei Möglichkeiten: Entweder du meinst mit chmod irgendwas anderes und du programmierst wirklich QB unter Windows, oder du programmierst FreeBasic unter einem *nix... Welche Theorie stimmt? zwinkern


Wahrscheinlich die hier:
Er möchte auf eine Datei im Internet - ich nehm mal an via FTP - zugreifen, welche im Dateioktett auf 777 steht
Mit HTTP geht es nicht so einfach, weil das Protokoll kein reines Senden von Dateien zulässt, hier muss man sich eines Uploadescript bedienen, welches auf dem Server läuft.
In QB ist dies alles zwar möglich... aber unter FreeBasic ist dies wesentlich einfacher

zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 19.12.2007, 17:52    Titel: Antworten mit Zitat

Ja, sowas habe ich das mit dem Internet gemeint.
Wie mache ich denn sowas mit QB? zwinkern
Ein Uploadescript wäre ja an sich kein Problem.

Habe mal was mit etwas aus der FaQ probiert:

Code:
username$ = "username"
passwort$ = "passwort"
quellverzeichnis$ = "/-/"
zielverzeichnis$ = ""
dateiname$ = "test.dat"
hostname$ = "host.de/"

OPEN ENVIRON$("TEMP") + "~FTPCMD.TMP" FOR OUTPUT AS 1
PRINT#1, "user "; username$; " "; passwort$
PRINT#1, "cd "; quellverzeichnis$
PRINT#1, "lcd "; zielverzeichnis$
PRINT#1, "bin"
PRINT#1, "get "; dateiname$
PRINT#1, "bye"
CLOSE 1
SHELL "ftp -n " + hostname$ + " <%TEMP%\~FTPCMD.TMP"
KILL ENVIRON$("TEMP") + "\~FTPCMD.TMP"


Klappt natürlich nicht (unzul. Dateiname). Die Werte von den Variablen habe ich hier logischerweise verändert.


Wegen den "parallelen" Sachen:

Kann es dabei nicht zu Problemen kommen? Zum Beispiel, man drückt eine Taste, aber sie wird nicht abgefragt, weil das Programm gerade woanders steht. Theorethisch könnte man in diesem Fall die Abfrage eine Sekunde dauern lassen. Aber gibt es da nicht eine sauberere Lösung?

Das mit der Eingabegeschichte hatte ich mir schon gedacht. Wird mit den Arrays (anderer Thread) aber recht einfach sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

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

Keks hat Folgendes geschrieben:
Code:
SHELL "ftp -n " + hostname$ + " <%TEMP%\~FTPCMD.TMP"
KILL ENVIRON$("TEMP") + "\~FTPCMD.TMP"

Klappt natürlich nicht (unzul. Dateiname). Die Werte von den Variablen habe ich hier logischerweise verändert.

Korrekt, da muss Thomas Antonis unbedingt korrigierend dahinter. Zwar hatte er die Sache mit dem integrierten %TEMP% soweit korrekt überlegt, der Pferdefuss liegt jedoch in der Tatsache, dass es System- und Prozess-Umgebungsvariablen gibt!

Dazu einfach einmal folgendes Code-Snippet in QB ausprobieren:
Code:
PRINT ENVIRON$("TEMP")
SHELL "echo %TEMP%"

und als Ausgabe erhält man zwei verschiedene Angaben.

An dieser Stelle sei ausdrücklich auf

http://msdn2.microsoft.com/en-us/library/fd7hxfdd%28VS.85%29.aspx

verwiesen (Doku Windows Script Host / VBScript), wo man speziell aufs Stringargument achten muss, d.h. es wird zwischen systemweiten und prozessspezifischen Umgebungsvariablen unterschieden! Siehe ebenfalls:

http://beilagen.dreael.ch/Diverses/Umgebungsvariablen.gif

(die systemweiten Umgebungsvariablen kann man übrigens nur als lokalen Administrator bearbeiten)

Der einzig sichere Weg: QB selber die Variablensubstitution machen lassen, d.h. SHELL-Zeile aus Monster-FAQ-Beispiel in
Code:
SHELL "ftp -n " + hostname$ + " <" + ENVIRON$("TEMP") + "\~FTPCMD.TMP"

ändern.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 20.12.2007, 18:28    Titel: Antworten mit Zitat

Dann kommt halt

C:\WINDOWS\TEMP
%TEMP%

Die Datei lässt sich natürlich immer noch nicht öffnen.


Was ist dann?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 20.12.2007, 21:43    Titel: Antworten mit Zitat

Keks hat Folgendes geschrieben:
Was ist dann?

Du musst die SHELL-Anweisung bei Dir wie von mir zuvor genannt anpassen. Der kleine Code zuvor ist für die Interessierten gedacht, welche hoffentlich bemerkt haben, dass die %TEMP%-Variablensubstitution in diesem Fall überhaupt nicht stattgefunden hat.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 21.12.2007, 12:56    Titel: Antworten mit Zitat

Das habe ich ja auch gemacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 23.12.2007, 12:29    Titel: Antworten mit Zitat

Weiß keiner wies weiter geht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 23.12.2007, 12:35    Titel: Antworten mit Zitat

Lösungsansätze wurden hier zu Genüge aufgezeigt. Jetzt wärst eigentlich du am Zug. Das, was du als Vorhaben am Anfang beschrieben hast, ist ohne Weiteres realisierbar (OK, kein Multitasking in dem Sinne, aber halt ein Pseudomultitasking wie Nemored das beschrieben hat). Du musst jetzt bloß noch die verschiedenen Anregungen, die hier geliefert wurden, zu einem Programm zusammenfügen.
Wenn dein Code nicht funktioniert, poste bitte genau den Code, der bei dir nicht funktioniert - auch mit allen Sachen, von denen du glaubst, dass sie mit dem Problem nichts zu tun hätten - halt komplett. Dann können wir zunächst testen, ob das Problem replizierbar ist oder ob dein Computer irgendwie fehlkonfiguriert ist.
_________________

Die gefährlichsten Familienclans | 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
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 23.12.2007, 19:51    Titel: Antworten mit Zitat

Nein, ich meine doch das mit den Dateien im Internet. Der Code steht etwas weiter oben.

Weiß denn jemand, wie man das wirklich zum laufen bringt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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