AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi StrinGrid in einer Datei speichern und auch wieder öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

StrinGrid in einer Datei speichern und auch wieder öffnen

Ein Thema von dopeline · begonnen am 9. Mai 2003 · letzter Beitrag vom 11. Mai 2003
 
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3
  Alt 9. Mai 2003, 16:58
Hallo,
hier sind ein paar function's mit denen Du das machen kannst.
Delphi-Quellcode:
function GetToken(aString:String; SepChar: Char;TokenNum: Integer):String;
var
   Token : String;
   StrLen : Integer;
   TNum : Integer;
   TEnd : Integer;
begin
 StrLen := Length(aString);
 TNum := 1;
 TEnd := StrLen;
 while ((TNum <= TokenNum) and (TEnd <> 0)) do
   begin
    TEnd := Pos(SepChar,aString);
    if TEnd <> 0 then
      begin
      Token := Copy(aString,1,Tend - 1);
      Delete(aString,1,TEnd);
      Inc(TNum);
      end // if TEnd <> 0 then
      else
        begin
        Token := aString;
        end; // else if TEnd <> 0 then
    end; // while ((TNum <= TokenNum) and (TEnd <> 0)) do
 If TNum >= TokenNum then
   begin
   Result := Token;
   end // If TNum >= TokenNum then
   else
     begin
     Result := '';
     end;// else If TNum >= TokenNum then
end;

function NumToken(aString:String; SepChar: Char):Integer;
var
   RChar : Char;
   StrLen : Integer;
   TNum : Integer;
   TEnd : Integer;
begin
  If SepChar = '#then
    RChar := '*'
    else
      RChar := '#';
  StrLen := Length(aString);
  TNum := 0;
  TEnd := StrLen;
  while TEnd <> 0 do
    begin
    Inc(TNum);
    TEnd := Pos(SepChar,aString);
    if TEnd <> 0 then
      begin
      aString[TEnd] := RChar;
      end;
    end;
 Result := TNum;
end;

procedure DeleteRow(yourStringGrid: TStringGrid; ARow: Integer);
var i: Integer;
begin
  with yourStringGrid do
  begin
    for i := ARow to RowCount-2 do
      Rows[i].Assign(Rows[i+1]);
    RowCount := RowCount - 1
  end;
end;

procedure DeleteEmptyGridRows(Grid : TStringGrid);
var
  aCol,
  aRow : Integer;
  CheckSum : Integer;
begin
  CheckSum:=Grid.ColCount;
  aRow:=0;
  CheckSum:=0;
  While aRow<=Grid.RowCount-1 do
    begin
    CheckSum:=0;
    For aCol:=0 to Grid.ColCount-1 do
      begin
      If Grid.Cells[aCol,aRow]<>'then
        Inc(CheckSum);
      end;
    If CheckSum=0 then
      DeleteRow(Grid,aRow)
      else
        Inc(aRow);
    end;
end;

function SaveGridToFile(Grid : TStringGrid; Filename : String; SepChar : Char; DelEmptyRows : Boolean) : Boolean;
var
  Tmp : TStringList;
  aCol,
  aRow : Integer;
  H : String;
  aGrid : TStringGrid;
begin
  Result:=True;
  Tmp:=TStringList.Create;
  aGrid:=TStringGrid.Create(Nil);
  Try
    Try
      aGrid.ColCount:=Grid.ColCount;
      aGrid.RowCount:=Grid.RowCount;
      For aRow:=0 to Grid.RowCount-1 do
        aGrid.Rows[aRow].Assign(Grid.Rows[aRow]);
      If DelEmptyRows then
        DeleteEmptyGridRows(aGrid);
      For aRow:=0 to aGrid.RowCount-1 do
        begin
        H:='';
        For aCol:=0 to aGrid.ColCount-1 do
          H:=H+Grid.Cells[aCol,aRow]+SepChar;
        Tmp.Add(H);
        end;
      Tmp.SaveToFile(Filename);
    Except
      Result:=False;
    end;
  Finally
    aGrid.Free;
    Tmp.Free;
  end;
end;

function LoadGridFromFile(Grid : TStringGrid; Filename : String; SepChar : Char) : Boolean;
var
  Tmp : TStringList;
  NewColCount : Integer;
  aCol,
  aRow : Integer;
begin
  Result:=True;
  Tmp:=TStringList.Create;
  Try
    Try
      Tmp.LoadFromFile(Filename);
      NewColCount:=NumToken(Tmp.Strings[0],SepChar)-1;
      Grid.ColCount:=NewColCount;
      Grid.RowCount:=Tmp.Count;
      For aRow:=0 to Tmp.Count-1 do
        begin
        For aCol:=1 to NewColCount do
          Grid.Cells[aCol-1,aRow]:=GetToken(Tmp[aRow],SepChar,aCol);
        end;
    Except
      Result:=False;
    end;
  Finally
    Tmp.Free;
  end;
end;
Die Funktionen auf die es ankommt sind:
function SaveGridToFile(Grid : TStringGrid; Filename : String; SepChar : Char; DelEmptyRows : Boolean) : Boolean;
function LoadGridFromFile(Grid : TStringGrid; Filename : String; SepChar : Char) : Boolean;

Die proceduren DeleteEmptyGridRows, DeleteRow, GetToken und NumToken sind nur Hilfsproceduren

Parameter für SaveGridToFile:
Grid : Das TStringGrid, dessn Inhalt gespeichert werden soll
Filename : Pfad und Dateiname
SepChar : Das Separierungzeichen für die einzelnen Strings einer Zeile z.B. ein ;
DelEmptyRows : Wenn True, dann werden alle Zeilen ohne Inhalt nicht gespeichert.

Parameter LoadGridFromFile:
Grid : Das TStringGrid, dessn Inhalt gespeichert werden soll
Filename : Pfad und Dateiname
SepChar : Das Separierungzeichen für die einzelnen Strings einer Zeile z.B. ein ;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 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