Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
marlu
Anmeldungsdatum: 01.04.2012 Beiträge: 4 Wohnort: Rostock
|
Verfasst am: 01.04.2012, 22:11 Titel: einzelne Zeile in datei.txt suchen und auslesen |
|
|
Habe (53) 60-zeilige Textdateien mit Nummerierung (10..79) am Zeilenanfang und Sprüchen unterschiedlicher Länge. Beim Aufruf von Szahl (s.u.) werden immer Sätze ca 10-20 Zeilen weiter ausgegeben.
Außerdem finde ich keine Definition für Zeilenende (eol) gibt es das nicht?
Dim As string * 200 Satz
Dim filename AS STRING
Dim Szahl As integer
open filename for random access READ as #1
get #1, Szahl, Satz
close #1
Unter Unix leicht mit Betriebsystem programmierbar suche ich ein einfaches Programmiersystem für diese Aufgabe. Kann mir jemand helfen?
Vielen Dank!
Marlu |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 02.04.2012, 08:19 Titel: |
|
|
"Get" list binär bzw in Blöcke von gleicher breite.
da deine sprüche aber wohl unterschiedlich lang sind, und diese duch je eien zeile representiert werden, kannst du nur so vorgehen:
Code: |
'...
open bla...
'...
Dim X as UInteger
Do Until EOF(#1)
X += 1 'ein zähler
Line Input #1, Satz 'nächste zeile einlesen
If X = SZahl Then Exit Do 'vergleichen, ob zähler der gesuchten zeile entspricht, wenn ja, dann raus aus schleife
Satz = "" 'wenn nicht, dann speicher leeren, damit bei dateiende nichts in der variable steht
Loop
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
marlu
Anmeldungsdatum: 01.04.2012 Beiträge: 4 Wohnort: Rostock
|
Verfasst am: 02.04.2012, 17:30 Titel: |
|
|
Danke für die Hilfe, in der Vielzahl der Möglichkeiten übersieht man zuletzt die richtige.
Noch 2 neue Fragen:
Kann man Freebasic-Programme auch im 64-Bit-Modus nutzen (sicher dort compiliert)?
Gibt es eine Möglichkeit, die Textausgabe in einem Windows-Fenster Screenres) mit größerer Schrift zu versehen? Leider funktioniert Wstr(äöü...) nicht bei Ausgabe in dieses Fenster, allerdings bei Ausgabe in eine Text-Datei. Was kann man sonst tun?
Vielen Dank für Eure Mühe
Marlu |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 02.04.2012, 20:49 Titel: |
|
|
Deine erste Frage ist schnell beantwortet: FB erstellt zwar 32-Bit Programme - diese laufen aber auf 64-Bit Rechnern. Unter Windows ist dafür keine zusätzliche Konfiguration nötig. Unter div. Linux Distributionen müssen einige 32-Bit Pakete nachinstalliert werden, damit 32-Bit FreeBasic Programme laufen.
Zu deiner zweiten Frage: Wenn du Text standardmäßig mit "PRINT" ausgibst würde ich die Frage mit nein beantworten - nicht möglich (jedenfalls nicht ohne größeren Aufwand, soweit ich weiß)
Wenn du stattdessen "DRAW STRING" zur Textausgabe verwendest bist du um einiges flexibler und kannst auch benutzerdefinierte Schriftarten verwenden, die eine beliebige Größe haben können, siehe http://www.freebasic-portal.de/tutorials/schriftarten-unter-freebasic-44-s4.html
Wenn du verschiedene Texte in verschiedenen Größen ausgeben willst, würde ich dir aber eine fertige Bibliothek für solche Zwecke empfehlen. Folgende hab ich gerade in Erinnerung, es gibt aber mehrere:
http://www.freebasic.net/forum/viewtopic.php?f=8&t=12078
Damit würde sich auch dein Problem mit Umlauten quasi von selbst lösen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
marlu
Anmeldungsdatum: 01.04.2012 Beiträge: 4 Wohnort: Rostock
|
Verfasst am: 02.04.2012, 23:41 Titel: Fonts |
|
|
Danke für die schnelle Antwort.
Daß das Programm unter 64Bit laufen kann ist tröstlich.
An den Fonts scheitere ich, das ist mir zu kompliziert, muß also die Winzschrift ausreichen. Warum die allerdings noch kleiner ist als die DOS-Fenster-Schrift, verstehe ich nicht, vielleicht hat Windows da seine Hand im Spiel. Soll schließlich nur manchmal einen Spruch aus meiner Sammlung anzeigen.
Wenn sich mal eine einfache Lösung findet, wäre ich dankbar!
Ein schönes Osterfest
Marlu |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 03.04.2012, 00:12 Titel: |
|
|
Bei SCREEN / SCREENRES ist eine Schriftgröße von 8x8 Pixel voreingestellt, das kannst du (in Grenzen) mit WIDTH anpassen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
marlu
Anmeldungsdatum: 01.04.2012 Beiträge: 4 Wohnort: Rostock
|
Verfasst am: 03.04.2012, 15:54 Titel: Wunderbar |
|
|
Dankeschön, wunderbar, jetzt ist das Fenster sehr gut.
Für Textausgaben wie bei mir sollte man nicht Screenres nutzen sondern Screen 0! Aber das muß man entweder mühselig ausprobieren oder ein Eingeweihter hilft einem. Meine Fortran- und dBase-Programmierung liegt >15 Jahre zurück.
Darf ich noch eine Frage stellen?
Ich habe mehrere Dateien, deren Anzahl sich erhöhen kann, wenn ich mehr Sprüche habe (z.Zt. 53). Um auch neue Dateien nutzen zu können, zählt das Programm die Dateien. Ich fand keine andere Möglichkeit, als alle der Reihe nach zu öffnen/schließen und den Zähler zu erhöhen. Gibt es eine elegantere Methode?
Ist aber auch nicht so wichtig, das Programm läuft ja nur kurz, Zeitverbrauch minimal.
Wenn Ihr Interesse habt, gebe ich das kleine Programm nebst 1 Datei gern weiter.
Auf jeden Fall vielen Dank für die Hilfe
Marlu |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 03.04.2012, 17:07 Titel: |
|
|
Wenn deine Daten auf mehrere Dateien verteilt sind, musst du sowieso alle einzeln öffnen - insofern ist es durchaus sinnvoll, sie einfach nacheinander zu öffnen und auszulesen. Wenn du eine einfache Methode suchst, alle Dateien mit einem Muster zu finden (z. B. sprueche01.txt, sprueche02.txt, ... spruecheXX.txt), kann dir möglicherweise DIR weiterhelfen - dann kannst du das schön innerhalb einer Schleife abarbeiten (schneller macht es das Programm natürlich nicht, aber kompakter).
SCREEN 0 brauchst du eigentlich gar nicht; wenn du kein SCREEN oder SCREENRES verwendest, bist du automatisch im SCREEN 0. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|