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:

Consolenzeile lesen

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



Anmeldungsdatum: 06.01.2013
Beiträge: 68

BeitragVerfasst am: 06.01.2013, 20:14    Titel: Consolenzeile lesen Antworten mit Zitat

Hallo,

wie ist es möglich, eine Zeile aus der Console zu lesen. Öhnlich wie std::cin in c?
Einen iostream header oder etwas equivalentes habe ich nicht gefunden.

Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

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

Hallo und willkommen im Forum!

Konsoleneingaben können u. a. mit den Befehlen INPUT und LINE INPUT (siehe LINE INPUT in der Befehlsreferenz) abgefragt werden.

Beispielcode:
Code:
Dim Eingabe As String

Line Input "Bitte geben Sie Ihren Namen ein: ", Eingabe
Print "Ihre Eingabe war: "; chr(34); Eingabe; chr(34)
' Hinweis: chr(34) ist ein Anführungszeichen

Print  'Leerzeile
Print "Beliebige Taste zum Beenden druecken."
Sleep  'Warten auf Tastendruck


Viele Grüße!
Sebastian
_________________

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
storky



Anmeldungsdatum: 06.01.2013
Beiträge: 68

BeitragVerfasst am: 06.01.2013, 20:34    Titel: Antworten mit Zitat

Danke für die Antwort, aber das war nicht ganz meine Idee.

Ich werde mal das Problem als Gesamtpaket schildern, bevor ich haufen kleine uneindeutige Fragen stelle.

Zwar möchte ich einen Dateicrawler bauen, der alle Pfade zu Dateien in einem Ordner und dessen Unterordner usw usw.. durchläuft, bis alles in dem Ordner erfasst wurden ist.

Quasi unter Windows: dir /b/s/w

Bis jetzt hatte ich das so gelöst:

Code:

Path = COMMAND(2)
Kill "dir.tmp"
Shell ("dir /b/s/w " & Chr(34) & path & Chr(34) & " > dir.tmp")
Print "Generating filelist..."
Dim cFile As String
Open "dir.tmp" For input As #1
   DO UNTIL EOF(1)
      Line INPUT #1, cFile
         If FileLen(cFile) Then
            overallSize += FileLen(cFile)
            ReDim Preserve files(FileCount)
            files(FileCount) = cfile
            FileCount +=1
         End If
      Loop
Close #1


Nun ist das Problem, das Programm soll auch mal eine komplette HDD auslesen können. Da wird "dir.tmp" locker mal 100 mb groß und das alles in Arrays aufsplitten nur um jeden array wieder in einer Schlaufe zu verwenden... ist einfach... zu langsam.

Meine neue Idee wäre quasi

while shell("dir c:\")
read line
cls
do loop

^^also shell gibt einmal 1 zurück und dann 0, kann man natürlich nciht stoppen, aber hab mir das schematisch als Pseudocode gedacht.

Also soll das Programm so schnell wie möglich crawlen und am besten den neuen Pfad gleich verwenden. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 06.01.2013, 20:37    Titel: Antworten mit Zitat

storky hat Folgendes geschrieben:
while shell("dir c:\")
read line
cls
do loop

Ah, okay, sowas geht mit OPEN PIPE. Damit kann man die Konsolenausgabe eines anderen Programms als Stream öffnen und wie eine Datei zeilenweise einlesen. lächeln

Nachtrag: Wenn man während des Auslesens einer dir-Ausgabe weitere dir-Ausgaben erfragt und einliest (rekursive Verschachtelung entlang des Verzeichnisbaums), muss man allerdings beachten, dass dabei sehr viele Dateihandles gleichzeitig geöffnet werden müssten. Das heißt, es darf nicht immer schlichtweg "#1" als Dateihandle benutzt werden, sondern jede weitere Schachtelung in die Tiefe braucht ein eigenes Handle (da die Streams ja parallel offen wären). Zur Handle-Anzahl gibt es seitens des Betriebssystems u.U. jedoch ein Limit.
_________________

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
storky



Anmeldungsdatum: 06.01.2013
Beiträge: 68

BeitragVerfasst am: 06.01.2013, 21:05    Titel: Antworten mit Zitat

Vielen Dank!
Funktioniert wunderbar.
Nein das eine dir reicht lächeln

Edit: vorheriger Post war bissel übereilt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 06.01.2013, 22:48    Titel: Antworten mit Zitat

storky hat Folgendes geschrieben:
Zwar möchte ich einen Dateicrawler bauen, der alle Pfade zu Dateien in einem Ordner und dessen Unterordner usw usw.. durchläuft, bis alles in dem Ordner erfasst wurden ist.

Dazu könntest du aber, wie üblich, den DIR-Befehl von FreeBasic verwenden, anstatt den Umweg über ein externes Programm zu gehen. Weitere Vorteile sind die Einsparung einer temporären (womöglich sehr großen) Datei, volle Kontrolle des eigenen Programms während dem "crawlen" und ziemlich sicher auch eine schnellere und ressourcenschonendere Ausführung.

Natürlich muss das rekursive Durchsuchen dann selbst programmiert werden, wobei man allerdings auf bestehenden Code zurückgreifen kann: z.B. von hier, hier oder hier
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
storky



Anmeldungsdatum: 06.01.2013
Beiträge: 68

BeitragVerfasst am: 07.01.2013, 16:16    Titel: Antworten mit Zitat

Mit dem dir hatte ich es Anfangs versucht aber nach großer Verwirrung abgebrochen, hatte die Beispiele nicht gefunden :/
Ich denke aber ich belass es mit der Pipe, da angewandt auf ne ganze Festplatte, kein besonderer Leistungsverlust auftritt.
Aber danke, ich merk es mir vor fürs Nächste mal. lächeln

Appropos, mein Projekt ist nun soweit fertig. Ist ein Dateiencrypter, der ein/e angebebene/s Verzeichnis/ Datei mit einem Rotierenden Sha1 key in xor verschlüsselt. Der Key kommt durch ein wählbares Passwort zustande natürlich... Teste es gerade auf meiner alten HDD mit ~45mb/s.

Ich such mal ne Sektion wo ich es vorstellen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 07.01.2013, 16:55    Titel: Antworten mit Zitat

http://ops.ath.cx/code?id=67


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 07.01.2013, 17:16    Titel: Antworten mit Zitat

Es ist zwar nur ein Beispiel, aber... urgh. C:\Windows\Temp\? Was sollen diese hardgecodeten Pfade? Für sowas gibt es ENVIRON("TEMP") in FreeBASIC.
_________________
» 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
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 07.01.2013, 17:42    Titel: Antworten mit Zitat

Damit die leute sehen, das und wie man dort einen Pfad angibt, udn nicht noch erst herausfinden müssen, was "Environ" tut, wen sie das noch nie gesehen haben.

Und, wie du schon geschrieben hast, es is nur ein beispiel. da kann ich alles rein schreiben, was mir gefällt. .. nächste ma schreib ich "foo:/bar/" verwundert


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
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 FreeBASIC. 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