In Datei Schreiben und Eine Formatierte ausgabe
In Datei Schreiben und Eine Formatierte ausgabe
Hallo, also ich habe ein Programm geschrieben das in eine Datei schreibt allerdings überschreibt es jedes mal das was forher drin stand.
Und des wegen meine 1 Frage wie kann ich ihn dazu bringen das er den Text in die nächste Zeile schreibt?
Nun jetzt wüste ich noch gern wie ich die Zeile Formatiert in die datie schreibe? B.: Der Benutzer gibt folgendes ein:
"Spalte eins Spalte zwei spalte drei spalte vier"
v1 v2 v3 v4
v=variable
So jetzt möchte ich aber das er das nicht so in die Datei schreibt sondern so:
"Spalte eins Spalte zwei spalte drei spalte vier"
und wenn dann der nächste ein trag kommt soll das egal sein wie lang v ist. allso so:
"Spalte eins Spalte zwei spalte drei spalte vier"
"dies ist jetzt längei Spalte zwei spalte drei spalte vier"
also ich hoffe irversteht was ich meine!!!
Ich hoffe ihr könnt mir Helfen!
Ich bin für jede Antwort dankbar!!!
netfreak
Und des wegen meine 1 Frage wie kann ich ihn dazu bringen das er den Text in die nächste Zeile schreibt?
Nun jetzt wüste ich noch gern wie ich die Zeile Formatiert in die datie schreibe? B.: Der Benutzer gibt folgendes ein:
"Spalte eins Spalte zwei spalte drei spalte vier"
v1 v2 v3 v4
v=variable
So jetzt möchte ich aber das er das nicht so in die Datei schreibt sondern so:
"Spalte eins Spalte zwei spalte drei spalte vier"
und wenn dann der nächste ein trag kommt soll das egal sein wie lang v ist. allso so:
"Spalte eins Spalte zwei spalte drei spalte vier"
"dies ist jetzt längei Spalte zwei spalte drei spalte vier"
also ich hoffe irversteht was ich meine!!!
Ich hoffe ihr könnt mir Helfen!
Ich bin für jede Antwort dankbar!!!
netfreak
mfg
netfreak
netfreak
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Um an das Ende einer Datei zu schreiben, öffnest du sie einfach mit [c]OpenFile()[/c] und springst dann mit [c]FileSeek()[/c] und [c]Lof()[/c] an das Ende der Datei. Das sieht dann so aus: [c]FileSeek(Lof())[/c]. Jetzt sollten alle folgenden Schreibanweisungen an die vorhandene Datei angehängt werden.
Was du allerdings mit deiner zweiten Frage weiß ich allerdings nicht, was du damit meinst.
Was du allerdings mit deiner zweiten Frage weiß ich allerdings nicht, was du damit meinst.
Also erst mal Danke für die Antwort!
Alerdings klapt das mit FileSeek(Lof()) nicht ganz er schreibt es einfach hinter den fohrigen eintrag ich möchte aber das er in die nächste zeile schreibt!
Zu 2 Frage:
alos ich habe 4variablen diese sollen wie in einer tabelle geordnet werden so das es so aus sieht "v1 v2 v3 v4" oder so änlich
und wenn dann noch ein eintrag kommt soll es auch so ausseh also heißt das es soll egal seihn wie lang v1 oder v2 ist es soll dan auch so aus sehen:
"v1 v2 v3 v4"
"v1test v2 v3 v4"
Ich hoffe es hat dieses mal jemand verstanden!
Alerdings klapt das mit FileSeek(Lof()) nicht ganz er schreibt es einfach hinter den fohrigen eintrag ich möchte aber das er in die nächste zeile schreibt!
Zu 2 Frage:
alos ich habe 4variablen diese sollen wie in einer tabelle geordnet werden so das es so aus sieht "v1 v2 v3 v4" oder so änlich
und wenn dann noch ein eintrag kommt soll es auch so ausseh also heißt das es soll egal seihn wie lang v1 oder v2 ist es soll dan auch so aus sehen:
"v1 v2 v3 v4"
"v1test v2 v3 v4"
Ich hoffe es hat dieses mal jemand verstanden!
mfg
netfreak
netfreak
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Zu dem ersten Problem nochmal:
Wenn du vorher nicht eine Zeile mit einem Return geschrieben hast, ist es logisch, dass die neue Zeile direkt hinter der letzten steht und nicht unten drunter.
Also entweder du schreibst vor der neuen Zeile noch einen Leerstring mit Zeilenende, also mit [c]WriteString("")[/c], oder du machst es schon bei dem Hineinschreiben vorher, indem du auch bei der letzten Zeile [c]WriteString("")[/c] benutzt.
Meinst du damit, dass die einzelnen Spalten bündig übereinander stehen sollen?
Wenn du vorher nicht eine Zeile mit einem Return geschrieben hast, ist es logisch, dass die neue Zeile direkt hinter der letzten steht und nicht unten drunter.
Also entweder du schreibst vor der neuen Zeile noch einen Leerstring mit Zeilenende, also mit [c]WriteString("")[/c], oder du machst es schon bei dem Hineinschreiben vorher, indem du auch bei der letzten Zeile [c]WriteString("")[/c] benutzt.
Meinst du damit, dass die einzelnen Spalten bündig übereinander stehen sollen?
Also anscheinend weiß niemand was ich meine!
Also versuche ich es noch mal zu erklären!
Ich lese vom Benutzer Daten ein. Diese werden dann in eine Datei geschreiben. So jetzt möchte ich das z.b.: die Adresse an eine bestimmte Positsion in der Zeile schrieben wird!
Ich hoffe diese mal hat es jemand verstanden!
Und kann mir Helfen!
Also versuche ich es noch mal zu erklären!
Ich lese vom Benutzer Daten ein. Diese werden dann in eine Datei geschreiben. So jetzt möchte ich das z.b.: die Adresse an eine bestimmte Positsion in der Zeile schrieben wird!
Ich hoffe diese mal hat es jemand verstanden!
Und kann mir Helfen!
mfg
netfreak
netfreak
Und wie Bring ich hin da zu das er bis zu dieser Position Leerzeichen macht weil das soll ja nachher egal sein wie lang der Name oder die Adresse ist. Die Adress sol nämlich dann immer an der gleich stelle anfangen wie die oben drüber!
Es soll so ausehen:
und nicht so:
Verstanden?
Ich hoffe mir kann jemand helfen!
//Edit: Der liest keine Leerzeichen!!!! Ich hoffe ihr könnt es euch drotzdem vorstellen
///Edit by freedimension: Mit Lin.. äh Code-Tags wäre das nicht passiert
Hab's mal nachträglich eingebaut.
Es soll so ausehen:
Code: Alles auswählen
Name1 Adresse1
Name231231 Adresse23131
Code: Alles auswählen
name1 Adresse1
jnasfdadaf Adresse22342
Ich hoffe mir kann jemand helfen!
//Edit: Der liest keine Leerzeichen!!!! Ich hoffe ihr könnt es euch drotzdem vorstellen
///Edit by freedimension: Mit Lin.. äh Code-Tags wäre das nicht passiert
mfg
netfreak
netfreak
Dann reservier doch 50 Zeichen für den Namen und weitere 50 für die Anschrift.
Dann schreibst du zuerst den Namen, füllst bis 50 Zeichen mit " " (Leerstellen) auf und schreibst dort dann die Adresse rein. Dann kann man diese Stelle auch direkt per Fileseek() anspringen um einzelne Einträge zu ändern oder so. Aber dann wird das alles recht groß, Speicherplatztechnisch. Wieso soll das denn alles immer so gleich angeordnet sein? Wenn die Datei asl eine Art Datenbank dienen soll, ist die optik dadrinnen doch wurscht.
Dann schreibst du zuerst den Namen, füllst bis 50 Zeichen mit " " (Leerstellen) auf und schreibst dort dann die Adresse rein. Dann kann man diese Stelle auch direkt per Fileseek() anspringen um einzelne Einträge zu ändern oder so. Aber dann wird das alles recht groß, Speicherplatztechnisch. Wieso soll das denn alles immer so gleich angeordnet sein? Wenn die Datei asl eine Art Datenbank dienen soll, ist die optik dadrinnen doch wurscht.
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Achso. Das ist doch einfach:
Code: Alles auswählen
#Space = 50 ; maximaler Platz, wenn Name = "" und Address = ""
Procedure WriteNameAndAddress(Name.s, Address.s)
WriteStringN(Name + Space(#Space - (Len(Name) + Len(Address))) + Address)
EndProcedure
File.s = "C:\Addresses.txt"
If OpenFile(0, File)
FileSeek(Lof())
WriteStringN("")
WriteNameAndAddress("Name", "Straße")
WriteStringN(LSet("", #Space, "-"))
WriteNameAndAddress("Theobald Hock", "Müncherstr. 8")
WriteNameAndAddress("Jürgen Henning", "Wiesbadnerstr. 24")
WriteNameAndAddress("Maria Wellenstein", "Am Römerhof 13")
CloseFile(0)
EndIf