Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: String Grid speichern nur mit Fehler

  Alt 14. Dez 2023, 08:37
Hallo und Willkommen hier...

Der Kardinalfehler deines Vorhabens sind (u.a.):
1. Visuelle Komponenten zur Datenhaltung zu benutzen.
2. ein Text Format zur Speicherung zu nutzen. XML als "Datenbank" zu benutzen ist OK durch die Struktur und Erweiterbarkeit. (PS: ich stehe auf richtige Datenbanken. Es kommt immer auf die Menge an Daten an )
3. Wenn dir die Optik deiner Oberfläche nicht mehr gefällt und du die Spalten anders anordnest, passen die Daten nicht mehr.

Tipps:
1. Trennung in Oberfläche, Logic, Daten
-> Form mit Stringgrid - Logic lädt die Daten - Logic übergibt der Form die Daten zum Darstellen
-> Speicherung1: die Logic liest das Grid aus - überträgt das in z.B. XML - Speicherung in Datei
-> Speicherung2: die Logic bekommt den aktuell geänderten Wert der Zelle - überträgt das direkt in z.B. XML -> Speicherung in Datei nach Wunsch direkt oder komplett
2. ein geeignetes Dateiformat (für zukünftige Änderungen, imho kein Binärformat)
3. Bitte den Quellcode ordentlich formatieren. Dann ist es besser für Andere zu lesen. Es hilft dir ob z.B. die begin/end zusammenpassen wenn sie untereinander stehen.

zur Frage:
Vieleicht kannst du mal anhängen was du erwartest. (Bild vor Speicherung, die Datei, Bild nach dem Einlesen)

Im ersten Durchlauf:
Delphi-Quellcode:
a := 0; // A = 0
F := TStringList.Create;
try
  F.LoadFromFile(opendialog1.FileName);
  for y1 := 1 to 500 do
  begin
    for x1 := 1 to 70 do
    begin
      a := a + 1; // A = 1
      StringGrid1.cells[x1,y1] := F.Strings[a - 1]; // Index = 0
    end;
  end;
...sollte eigentlich passen. Aber nur mit einzeiligen Werten. Sonst stimmt evt. der Index nicht. Deshalb das Muster der Datei...

Zitat:
Schau Dir mal die Eigenschaft vom Stringgrid : Delmiter bzw. die Methode DelimitedText an
Der Hinweis ist richtig für mehrzeilige Werte, aber: Delimiter bei TStringlist und nicht Stringgrid.

Geändert von haentschman (14. Dez 2023 um 09:13 Uhr)
  Mit Zitat antworten Zitat