Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StringGrid Laden/Speichern (https://www.delphipraxis.net/71922-stringgrid-laden-speichern.html)

Murcielago82 22. Jun 2006 15:05


StringGrid Laden/Speichern
 
Hallo,

ich möchte mein StringGrid Speichern. schaffe dieses auch. Nur wenn ich es Lade, bearbeited er diese Werte nicht. Wenn ich die Werte manuell per Hand eingebe geht es alles einwandfrei. Kann mir einer helfen und sagen was denn beim laden anders ist als bei der manuellen eingabe?

Danke

RWarnecke 22. Jun 2006 15:18

Re: StringGrid Laden/Speichern
 
Schaue Dir mal die beiden Links an, vielleicht helfen Dir die weiter :

Schweizer Link 1
Schweizer Link 2

Jasocul 22. Jun 2006 15:20

Re: StringGrid Laden/Speichern
 
Zitat:

Zitat von Murcielago82
Nur wenn ich es Lade bbearbeited er diese Werte nicht. Wenn ich die Werte manuell per Hand eingebe geht es alles einwandfrei.

Ein mir völlig unbekanntes Phänomen. Zeige doch mal, wie du speicherst und lädst.

Murcielago82 22. Jun 2006 15:29

Re: StringGrid Laden/Speichern
 
Hallo
Delphi-Quellcode:
procedure TSudoku.SpeichernClick(Sender: TObject);
VAR Dateiname:string;
begin
if SaveDialog1.Execute then
  begin
    Dateiname := SaveDialog1.FileName;
    SaveGrid(Stringgrid1,Dateiname);    
  end;
end;
//------------------------------------------------
procedure SaveGrid(StringGrid1: TStringGrid; fileName: string);
var
  iRow: integer;
  sl: TStringList;
begin
  sl := TStringList.Create;
  for iRow := 0 to StringGrid1.RowCount - 1 do
    sl.Add(StringGrid1.Rows[iRow].CommaText);
  sl.SaveToFile(fileName);
  sl.Free;
end;
//-----------------------------------------------
procedure TSudoku.LadenClick(Sender: TObject);
VAR Dateiname : String;
begin
if OpenDialog1.Execute then
  begin
    Dateiname := OpenDialog1.FileName;
    LoadFromFile(Stringgrid1, Dateiname);
  end;
end;
//---------------------------------------------
procedure LoadFromFile(StringGrid1: TStringGrid; txt: TFileName);
var
  sRows, sCols: TStrings;
  i: Integer;
begin
  sRows := TStringList.Create;
  sRows.LoadFromFile(txt);
  sCols := TStringList.Create;
  sCols.CommaText := sRows[0];
  StringGrid1.ColCount := sCols.Count;
  sCols.Free;
  StringGrid1.RowCount := sRows.Count;
  for i := 0 to Pred(sRows.Count) do
    StringGrid1.Rows[i].CommaText := sRows[i];
  sRows.Free;
end;
Er zeigt die geladenen Werte auch wieder so an wie abgespeichert, allerdings lassen diese sich dann nicht mehr wie sonst (manuelle Eingabe) bearbeiten.

Jasocul 22. Jun 2006 15:46

Re: StringGrid Laden/Speichern
 
Auf den ersten Blick sehe ich nichts, was zu deinem Problem führen könnte. Ich lese die Daten bei mir zwar etwas anders ein (umständlicher), aber daran dürfte es nicht liegen.

Murcielago82 22. Jun 2006 16:52

Re: StringGrid Laden/Speichern
 
Also ich speichere das geladene Grid in ein array. EigenschaftenGrid
Delphi-Quellcode:
procedure wertesetzen(StringGrid1:TStringGrid);  
VAR i,j : integer;
begin
  for i:=0 to n-1 do
    for j:=0 to n-1 do
      EigenschaftenGrid[i,j].wert := StringGrid1.Cells[j,i];
      EigenschaftenGrid[i,j].vorgegeben := 1;
  for i:=0 to n-1 do
    for j:=0 to n-1 do
      if EigenschaftenGrid[i,j].wert = '' then      // Diese Abfrage geht bei geladenen Werten nicht mehr.
         begin
         EigenschaftenGrid[i,j].wert := '0';
         EigenschaftenGrid[i,j].vorgegeben := 0;
         end;
end;

Murcielago82 22. Jun 2006 17:44

Re: StringGrid Laden/Speichern
 
Kann es sein das beim laden leer irgendwie nicht '' sondern nill oder so ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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