![]() |
Laden und speichern von Datein Problem
Hi!
Ich hab in meinem Programm eine Options Datei (City.opt). Und aus dieser lese ich den Inhalt aus und lasse Ihn in ein StringGrid schreiben. so:
Code:
das plus eins in:
SL.LoadFromFile(ExtractFilePath(Application.ExeName) + '\Options\City.opt');
SGStaedte.RowCount := (StrToInt(SL[0]) + 1); SGStaedte.ColCount := StrToInt(SL[1]); SL.Sort; SGStaedte.Cells[0, 0] := 'Städte'; for i := 1 to (SGStaedte.RowCount - 1) do SGStaedte.Rows[i].CommaText := SL[i - 1];
Code:
brauche ich wegen der Überschrift (FixedRow) den ich selber setze, denn in der Datei stehen nur die enzelnen Objekte. Und in den ersten beiden Zeilen die Row und Col angabe halt (wie zu lesen).
SGStaedte.RowCount := (StrToInt(SL[0]) + 1);
speichern tu ich es jetz so:
Code:
minus eins halt um die Fixed abzuziehen und in der for-Schleife fang ich halt bei eins an um die Fixed nicht mit zu speichern.
procedure TFFVConfig.BtnCitySaveClick(Sender: TObject);
var SL : TStringlist; //Stringlist die in Textdatei schreibt i : Integer; begin with SGStaedte do begin SL := TStringlist.Create; //erstellen de Stringlist Sl.Add(IntToStr(RowCount - 1)); //Spaltenanzahl Sl.Add(inttostr(ColCount)); //Zeilenanzahl for i := 1 to (RowCount - 1) do //Zeilen einzelnt in Stringlist schreiben SL.Add(Rows[i].CommaText); //Zeilen mit Kommas in Spalten teilen SL.SaveToFile(ExtractFilePath(Application.ExeName) + '\Options\City.opt'); //Stringliste in Datei speichern SL.Free; //auflösen der Stringlist end; wenn ich jetzt von auserhalb drauf zugreife auf das StringGrid mach ich das so:
Code:
Damit trage ich einen neuen Eintrag in das StringGrid ein. Dan sollte er es eigentlich speichern und neu laden um die alphabetische ordnung wider herzustellen. Das dumme is nur, dass mir dan ein oder zwei Eintrage verloren gehen. In der Datei stehen Sie noch drinnen aber im StringGrid nicht.
procedure TFFVConfigNew.BtnStadtOKClick(Sender: TObject);
begin with FFVConfig.SGStaedte do begin RowCount := RowCount + 1; Cells[0, RowCount - 1] := FFVConfigNew.EdtStadt.Text; end; FFVConfig.BtnCitySave.Click; Tableload; end; Erklärung: - erster Code is die Tableload (Teil davon) - SG = StringGrid - Btn = Button - FFV = Fom - Edt = EditFeld ich versteh nicht, warum das so nicht funktioniert, denn meiner Meinung nach wird die Datei beim Start des Programmes richtig ausgelesen (Tableload). Sprich da verlier ich keine Daten, erst in einer der beiden anderern proceduren. Wenn dan in der "procedure TFFVConfig.BtnCitySaveClick(Sender: TObject);". Kann sich das mal wer von euch anschaun und mir sagen wo der Fehler ist. mfg Barret |
Re: Laden und speichern von Datein Problem
Die Hinweise, den Source zu posten, einen vernünftigen Titel auszuwählen usw. das fällt doch anscheinend manchmal auf fruchtbaren Boden. :thumb:
Zitat:
Die Gesamtzahl der Cols und Rows in dem Grid ist Col/RowCount. Die Nummerierung beginnt jedoch bei 0. Beispiel : 10 Cols : ColCount = 10. Die einzelnen Spalten sind dann nummeriert als Col=0..9. Damit kommt man schnell durcheinander. Dein i muß also zumindest bei 0 anfangen, nicht bei 1 ! Oder viel besser : Du schreibst es so :
Delphi-Quellcode:
for i := FixedRows to (RowCount - 1) do //Zeilen einzelnt in Stringlist schreiben
|
Re: Laden und speichern von Datein Problem
Ja, dass mit Null und Eins is mir schon geläufig.
Das er da bei 1 anfängt is aber korrekt. An sonsten speichere den Inhalt der Fixed auch in die StringList. Kann ich aber nich machen, weil die Liste sortiert wird und dan würde er die überschrift mit sortieren und dan irgendwo im Grid eintragen. Dazu steht in der tableload:
Code:
damit das nicht passiert.
SGStaedte.Cells[0, 0] := 'Städte';
|
Re: Laden und speichern von Datein Problem
Ich weiss jetzt warum ich Datnsätze verlihre beim anzeigen. Speichern tu ich ja mit "CommaText". Das heist, wenn in dem String ein Leerzeichen enthalten ist schreibt er den mit anführungszeichen in meine Stringlist. Und alle String ohne Lerrzeichen bementsprechend ohne Anführungszeichen. Beim Auslesen sortiere ich die StringList und lass Sie dan ausgeben (im StringGrid). Problem an der Sache is nur, dass er nur die Strings mit Anführungszeichen ausgibt. Hat jemand von euch eine Idee??
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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