Seite 1 von 2
In Datei Schreiben und Eine Formatierte ausgabe
Verfasst: 26.10.2004 21:10
von netfreak
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
Verfasst: 26.10.2004 21:22
von NicTheQuick
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.
Verfasst: 26.10.2004 21:40
von netfreak
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!
Verfasst: 26.10.2004 21:44
von NicTheQuick
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?
Verfasst: 26.10.2004 21:51
von netfreak
Danke aber ich habe festgestel das man auch einfach WriteStringN("") verwenden kann drotzdem Danke!!!!
Verfasst: 28.10.2004 14:09
von netfreak
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!
Verfasst: 28.10.2004 14:19
von Ynnus
Dann wirst du wohl bis zur Position Leerstellen schreiben müssen. Wie sonst soll man an die Stelle kommen? Ist wie mit einer Textdatei, da kann man nicht einfach mittenrein klicken und dort anfangen zu schreiben.
Verfasst: 28.10.2004 14:30
von 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.
Verfasst: 28.10.2004 14:42
von Ynnus
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.
Verfasst: 28.10.2004 14:56
von NicTheQuick
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