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:

Zeilenumbrüche aus Datei importieren?

 
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
CProof



Anmeldungsdatum: 01.06.2006
Beiträge: 9

BeitragVerfasst am: 26.07.2006, 14:13    Titel: Zeilenumbrüche aus Datei importieren? Antworten mit Zitat

Mein Problem: Ich arbeite an einem Verschlüsselungsprogramm und möchte die zu codierenden Texte aus einer Textdatei importieren.
Solange alles in einer Zeile ist kann ich es mit

Code:

  open "text.txt" as #1

und dann nach dem input mit

  aktuelleszeichen$=mid(text$,position,1)




das aktuelle zeichen auslesen.

Das funktioniert bei allen Zeichen, auch bei Leerzeichen und Sonderzeichen.
Danach versuche ich den Zeichen einen Wert zuzuweisen:

Code:


if aktuelleszeichen$ = "A" then aktuellerwert = 1
if aktuelleszeichen$ = "B" then aktuellerwert = 2



Und wie soll ich hier einen Zeilenumbruch auslesen?

Danke für eure Hilfe!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 26.07.2006, 14:38    Titel: Antworten mit Zitat

Hi,

du könntest anstatt INPUT -> LINE INPUT nehmen.

Bei INPUT hast du zusätzlich zum Zeilenende noch das Problem das auch Kommas verschlungen werden.

LINE INPUT hört erst an einem EOL-Zeichen auf. CHR$(10).
Das heißt hinter jeder eingelesenen Zeile mit LINE INPUT kann man davon ausgehen das ein CHR$(10) und CHR$(13) existiert.
Ausser es handelt sich um die letzte Zeile. Dann ist dort keins vorhanden.


MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
CProof



Anmeldungsdatum: 01.06.2006
Beiträge: 9

BeitragVerfasst am: 26.07.2006, 15:50    Titel: Antworten mit Zitat

Erst mal Danke für die schnelle Hilfe!!

das heißt -> ich könnte mit Line Input ALLE Zeichen übernehmen, inklusive Kommas.
Und Line Input # stoppt die Aufnahme nach jedem Enter?

Die Probleme, die ich noch habe:

-) Wie kann ich in der Input-Textdatei die Anzahl der Zeilen erfassen und mit line input # auswählen, welche Zeile ich nehmen soll?
Gibt es hier so eine Befehls-Gruppierung wie LEN (Zur Längenerfassung) und MID (Auslesen eines Zeichens)? Ich bräuchte das ganze dann nämlich auch noch in der Horizontale für Anzahl der Zeilen erfassen und Zeile auswählen und in einen String speichern.

-) Was mache ich bei Umlauten? Meine Codierung versteht unter ü was anderes als FB.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

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

Hi,

zu 1.
Ja, alle Zeichen die einen ASCII-Wert >31 haben werden mit eingelesen.

zu 2.
Dafür gibt es im Input-Modus keinen direkten Befehl. Dort müßtest du alles Zeile per Zeile einlesen und evtl. in einem Array zwischenspeichern etc.
Dazu am besten mal den folgenden Beitrag anschauen:
http://forum.qbasic.at/viewtopic.php?t=2906

zu 3.
Jep, ANSII, ASCII und was es nicht noch alles gibt.
Am besten gar nicht mit "Ü", "Ä" etc arbeiten sondern mit den direkten ASCII-Werten.
Ich mein das so:
Code:

if aktuelleszeichen$ = chr$(65) then aktuellerwert = 1
if aktuelleszeichen$ = chr$(66) then aktuellerwert = 2

Dabei ist es völlig egal ob das Zeichen mit dem Ascii-Wert 65 nun ein "A" ist oder ein "Ü". Du mußt nur alle Werte abdecken. Dies ist am einfachsten zu lösen indem du einfach einen Berechnung zugrunde legst der alle ASCII-Werte bearbeitet egal welche es sind.
Beispiel dafür wäre z.B. zu jedem eingelesenen Wert einfach 10 dazuzuzählen.

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
CProof



Anmeldungsdatum: 01.06.2006
Beiträge: 9

BeitragVerfasst am: 26.07.2006, 16:20    Titel: Antworten mit Zitat

Die Anzahl der Zeilen könnte ich ja so bestimmen:

Code:

open "text.txt" for INPUT as #1
anzahlzeilen=0

do until EOF (1)
anzahlzeilen = anzahlzeilen +1
loop


Dann hätt ich in anzahlzeilen die Anzahl der Zeilen.
Doch nun verschlüsselt mein Programm Buchstabe für Buchstabe.
Und da sollte ich, wenn die erste Zeile zu Ende ist, irgendwie über Line Input #1 die zweite Zeile laden können, wie schaff ich das?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.07.2006, 18:48    Titel: Antworten mit Zitat

Hi CProof,
so könnte dein Ver-/Entschlüsselungsprogramm aussehen(Ausschnitt)..
Code:
Option Explicit
Option Dynamic
Dim DateiNr, i, DateiName As String, Zeile$
DateiName="text.txt"
DateiNr=FreeFile
Open DateiName For Input As #DateiNr
AnzahlZeilen=0
Do Until Eof(DateiNr)
  ReDim Preserve Datei(AnzahlZeilen)
  Line Input #DateiNummer, Zeile$
  Datei(AnzahlZeilen)=Encode(Zeile$)
  anzahlzeilen+=1
Loop
Close(DateiNr)
?"Datei ";DateiName; " eingelesen(";AnzahlZeilen;" Zeilen) und entschlüsselt.."
'..
Open DateiName For Output As #DateiNr
For i=0 To AnzahlZeilen-1
  Write #DateiNummer, Decode(Datei(i))
Next StepInLoop
Close(DateiNr)
?"Datei ";DateiName; " verschlüsselt und geschrieben.."
Solltest du noch mehr Code benötigen,
zögere nicht, dich an meine Geschäftstelle zu wenden zwecks Honorarvereinbarung vor lachen auf dem Boden rollen
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
CProof



Anmeldungsdatum: 01.06.2006
Beiträge: 9

BeitragVerfasst am: 26.07.2006, 21:53    Titel: Antworten mit Zitat

@ytwinky: Danke, aber ich mach das Programm nach meiner Methode, da kenn ich mich aus und es kostet micht nichts. grinsen

Eine Frage noch:

Wenn ich einen Text mit

Code:

PRINT #1, Text$


drucke, dann erzeugt fb noch viele Leerzeichen und einen Zeilenumbruch in meiner Datei. Mein Programm wertet Leerzeichen jedoch auch als Zeichen und somit habe ich Chaos bei der Dechiffrierung. Wie kann ich diese Leerzeichen unterdrücken?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.07.2006, 22:24    Titel: Antworten mit Zitat

Leerzeichen kannst du mit LTrim oder RTrim entfernen.
(Diese Befehle sowie viele andere auch, um nicht zu sagen alle grinsen, werden in der Befehlsreferenz beschrieben. Sie kostet nix, lediglich ein wenig Zeit zum Download und zum drin Lesen. Für Fehler in der CHM gibts sogar einen eigenen Thread!).
LF am Ende lassen sich durch Anfügen von ';' vermeiden, aber ich schätze, daß deine Datei dann unlesbar wird, weil kein Zeilenende mehr gespeichert wird zwinkern
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
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 27.07.2006, 09:26    Titel: Antworten mit Zitat

Du kannst sonst auch Byteweisse zugreifen.
Code:
 dim a as ubyte
 dim lang as uinteger
 
 Input " Name der Datei? ", file1$
 Input " Name der anderen Datei? ",file2$
 
 open file1$ for binary as #1  'Die Exe Datei öffnen
 open file2$ for binary as #2 'Die andere Datei öffnen
 
     do
         get #2,,a
         a = a xor 5
         put #1,,a
     loop until eof(2)
 sleep

Zuerst Zieldatei und dann die Datei die Verschlüsselt werden soll eingeben.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
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 -> 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