![]() |
Daten in Datei schreiben.
Wie kann man so Daten in einer Datei schreiben und wieder auslesen.
Date1 Date2 Date3 Date4 Date5 Date6 Also wie in einer Tabelle. |
Re: Daten in Datei schreiben.
Zitat:
ich würde vorschlagen, das ganze mit Assignfile, Readln, Writeln etc.. zu machen. Such mal in der OH bei Delphi, das ist ein Beispiel dazu. Dazu überlegst Du dir, wie Du Date1 Date2 etc trennst (meinetwegen mit einem ";". Beim auslesen suchst Du dir dann das TRennzeichen und liest entsprechend die Daten aus. |
Re: Daten in Datei schreiben.
Wenn die Tabelle rechteckig ist [immer die gleiche Anzahl von Einträgen pro Zeile] könntest du dir ein eigenes Datenformat überlegen:
Delphi-Quellcode:
So sparst du dir die Trennzeichen und ein aufwändiges rumgespiele mit pos/copy/delete. Wenn die Tabelle nicht rechteckig ist, kannst du ja einfach eine '0' oder '_' eintragen. Diese Dateien kannst du dann auch recht einfach mit einem normalen Editor anschauen und sie überprüfen.
Tabelle:
1 2 3 a b c Deine Datei: 2 //Anzahl der Spalten 3 //Anzahl der Einträge pro Spalte 1 2 3 a b c |
Re: Daten in Datei schreiben.
Hi,
z.B. Text kännte man doch eigentlich nehmen?! |
Re: Daten in Datei schreiben.
Vielleicht reicht dir auch eine TStringList in Verbindung mit SaveToFile und LoadFromFile.
|
Re: Daten in Datei schreiben.
Ich möchte ganz einfach, Festertittel und Position, von 4 Fenstern in einer Datei schreiben. Möglichst 1 Zeile 1 Fenster. zB.
Fenster1 250 100 Fenster2 410 1255 Fenster3 45 125 ... Das schreiben bekomme ich hin, aber das lesen nicht mehr, bzw. das Auswerten (Trennen der Daten in einer Zeile). |
Re: Daten in Datei schreiben.
warum wie ne tabelle muss das der user mit notepad oder so sehen/bearbeiten können?
|
Re: Daten in Datei schreiben.
Wenns dir nur drum geht, die Fensterpostionen bei einem neuen Start wieder herzustellen, kannst du dafür auch die JvFormStorage Komponente benutzen, aus der JVCL.
|
Re: Daten in Datei schreiben.
Du kannst dafür auch einfach 'ne ini benutzen
|
Re: Daten in Datei schreiben.
machs doch mit nem tfilestream, des ists beste.
Delphi-Quellcode:
der vorteil hier ist natürlich der dasses erstens schnell ist und zweitens wenig speicherplatz braucht, für jeden integer-wert den du speicherst werden lediglich 4 byte belegt.
fs := tfilestream.create('dateiname', fmcreate);
fs.write(form1.left, sizeof(integer)); fs.write(form1.top, sizeof(integer)); fs.write(form2.left, sizeof(integer)); {usw.} fs.free; //lesen: fs := tfilestream.create('dateiname', fmOpenRead or fmShareDenyNone); fs.seek(0, soFromBeginning); //musst mal teste vielleicht isses auch beim öffnen schon an anfang gespult dann kannst des weglassen. fs.read(form1.left, sizeof(integer)); fs.read(form1.top, sizeof(integer)); fs.read(form2.left, sizeof(integer)); //ich habs net getestet, kann sein dass du so dem "form1.top" kein wert zuweisen kannst, in dem fall muss du halt: fs.read(I{<- integer-variable}, sizeof(integer)); form1.left := I; //schreiben. fs.free; (man kanns dafür nur noch mit nem hex-editor gscheit lesen) |
Re: Daten in Datei schreiben.
Zitat:
|
Re: Daten in Datei schreiben.
Es sollte übersichlich sein, damit dem User klar wird, was zu was gehört. Das ganze sollte deswegen in einer Datei, damit diese Datei bearbeiten, bzw. austauschen kann. Bei VB. konnte man einfach - ; - beim schreiben und lesen setzen.
|
Re: Daten in Datei schreiben.
also wen der user die datei bearbeiten soll dann würd ich ne ini nehmen.
/edit: such mal inner hilfe nach TIniFile. damit geht das gaanz einfach.(etwa so wie ne registrierung auslesen oder so) |
Re: Daten in Datei schreiben.
@Jelly: ahja...
und wenn du dann 4 von den positionen speicherst heists halt 283628498308 wo hört die eine auf und fängt die andre an? du musst also einen terminator hinbauen, der braucht wieder ein byte platz und nachher musst auch noch umständlich danach scannen. ach und sonst kanns ja auch ein 2-byte-integer nehmen der dürfte für screen-koordinaten vollkommen reichen.(damit könnte man immerhin werte bis 65535 speichern) |
Re: Daten in Datei schreiben.
An einer Ini habe ich auch schon gedacht. Da habe ich fast das gleiche Probl. mit der Trennung. Ich müsse dann eine Trennung beim schreiben setzten und diese dann beim lesen scannen. Mit z.B copy usw. ist das sehr aufwendig. Ich dachte das es dafür vieleicht eine einfache Lösung gibt.
|
Re: Daten in Datei schreiben.
sagte ich doch schon:
TINIFILE!!
Delphi-Quellcode:
kann natürlich sein dasses total falsch ist ich hab delphi grad net geöffnet aber irgendwie so ähnlich isses, gibst halt mal irgendwo "tinifile" ein, klickst auf das wort so dass der cursor halt in dem wort drin ist und drückst F1.
var inif: tinifile;
begin inif:=tinifile.create(dateiname); inif.writestring('position_der_form_1_X', inttostr(form1.left)); inif.free; end; in dem ini file heists dann halt irgendwie so: position_der_form_1_X = 123 /edit: "if" ist wohl kein guter variablenname O.o |
Re: Daten in Datei schreiben.
Vielen Dank für die Antworten. Das schreiben klappt, aber ich bekomme das ganze nicht richtig eingelesen?
Delphi-Quellcode:
Ich mache da irgendwie ein Denkfehler, aber ich komme nicht darauf. Könntest Du mir mal ein Tipp geben, wie man das ganze wieder einlesen kann.
var
GameIni: TIniFile; begin Gameini := TIniFile.Create('C:\Dokumente und Einstellungen\Test\Desktop\FUNGAME.INI'); with GameIni do begin WriteString('Fenster', 'Tittel', 'Fenster1'); WriteInteger('Fenster', 'Top', 3); WriteInteger('Fenster', 'Left', 3); Free; end; |
Re: Daten in Datei schreiben.
Vielen Dank nochmal. Ich bin doch darauf gekommen.
Delphi-Quellcode:
var
GameIni: TIniFile; begin Gameini := TIniFile.Create('C:\Dokumente und Einstellungen\Test\Desktop\FUNGAME.INI'); with GameIni do begin Form2.Caption := ReadString('Fenster', 'Tittel',''); Form2.Top := ReadInteger('Fenster', 'Top', 0); Form2.Left := ReadInteger('Fenster', 'Left', 0); Free; end; |
Re: Daten in Datei schreiben.
Zitat:
|
Re: Daten in Datei schreiben.
:-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz