AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Textdatei in Stringgrid wandeln - wie geht das???

Textdatei in Stringgrid wandeln - wie geht das???

Ein Thema von lima · begonnen am 30. Dez 2002 · letzter Beitrag vom 31. Dez 2002
Antwort Antwort
Seite 2 von 3     12 3   
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#11
  Alt 30. Dez 2002, 18:58
Hallo nochmal, hier der Code zum laden und speichern des Inhalts eines StringGrids. Ich bin von drei Spalten ausgegangen, oben eine Zeile in der "Name", "Anschrift" und "Ort" steht, also ist die zweite Zeile (Index 1) die erste von oben in die man schreiben kann. Ich habs nicht ausgiebig getestet, sollte aber klappen:

Delphi-Quellcode:
uses IniFiles;

...

procedure TForm1.ButtonSpeichernClick(Sender: TObject);
var
  ini: TIniFile;
  i : Integer;
begin
  ini := TIniFile.Create('C:\Test.ini');
  try
    i := 1;
    with StringGrid1 do
      begin
        while Cells[0,i] <> 'do
          begin
            ini.WriteString('id'+IntToStr(i),'Name',Cells[0,i]);
            ini.WriteString('id'+IntToStr(i),'Anschrift',Cells[1,i]);
            ini.WriteString('id'+IntToStr(i),'Ort',Cells[2,i]);
            inc(i)
          end
      end
   finally
     FreeAndNil(ini)
   end
end;

procedure TForm1.ButtonLadenClick(Sender: TObject);
var
  ini: TIniFile;
  SL : TStringList;
  i : Integer;
begin
  ini := TIniFile.Create('C:\Test.ini');
  SL := TStringList.Create;
  try
    ini.ReadSections(SL);
    with StringGrid1 do
      begin
        for i := 0 to pred(SL.Count) do
          begin
            Cells[0,succ(i)] := ini.ReadString(SL[i],'Name','');
            Cells[1,succ(i)] := ini.ReadString(SL[i],'Anschrift','');
            Cells[2,succ(i)] := ini.ReadString(SL[i],'Ort','');
          end
      end
   finally
     FreeAndNil(SL);
     FreeAndNil(ini)
   end
end;
Bei Fragen nur melden

Gruß, Sebastian
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#12
  Alt 30. Dez 2002, 19:00
Danke erstmal, werd's gleich mal testen.
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#13
  Alt 30. Dez 2002, 19:54
Hab's mal getestet. Das Programm läuft zwar, aber es speichert in der INI-Datei nix ab. Hab's mal auf meine Bedürfnisse angepaßt. Der Fehler liegt bestimmt bei mir in den folgenden 2 Zeilen.

Es soll der eingeloggte Benutzer abgespeichert werden und das Datum. Mit einer textdatei hat das schon gefunzt.

Delphi-Quellcode:
ini.WriteString('id'+IntToStr(i),LoggedOnUserNameEx(NameSamCompatible),Cells[0,i]);
            ini.WriteString('id'+IntToStr(i),Datetostr(now),Cells[1,i]);
---------------------------------------------------------------------------

Delphi-Quellcode:
begin
  ini := TIniFile.Create('c:\test.ini');
  try
    i := 1;
    with StringGrid2 do
      begin
        while Cells[0,i] <> 'do
          begin
            ini.WriteString('id'+IntToStr(i),LoggedOnUserNameEx(NameSamCompatible),Cells[0,i]);
            ini.WriteString('id'+IntToStr(i),Datetostr(now),Cells[1,i]);
            inc(i)
          end
      end
   finally
     FreeAndNil(ini)
   end
end;
 end;
  end;
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#14
  Alt 30. Dez 2002, 20:04
Ich hab auch nochmal getestet, bei mir läufts!

Hast du auch FixedCols auf 0?
Denn es wird mit
while Cells[0,i] <> 'do ... getestet ob ein Name drinsteht, und der muss in der ganz linken Spalte stehen. Wenn du nicht FixedCols auf 0 haben willst musst du die Zahlen entsprechend anpassen!

Gruß, Sebastian
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#15
  Alt 30. Dez 2002, 20:08
Hab zwar auch FixedCols auf 0, aber mal sehen ....
... werde es diese Nacht nochmal probieren. Muß ja irgendwie funzen.
Thx nochmal für das Beispiel.
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#16
  Alt 30. Dez 2002, 20:17
Nochmal zur Erklärung von Ini.Writestring:

Der erste Parameter bereichnet die Sektion in welche geschrieben werden soll, ich hab für jede Zeile eine Sektion genommen:
'id'+IntToStr(i) Der zweite Parameter ist die Name des Eintrags, unter dem man den Wert dann später wieder abrufen kann. Ich hab in dem Code immer "Name" für den Wert aus dem Feld Name, "Anschrift" für den Wert aus Anschrift, und "Ort" für den Wert aus Ort genommen.

Der dritte Parameter ist das, was du eigentlich reinschreibst, also die Daten die du speichern willst. Der Rest dient nur um es Später wieder zu finden

So siehts dann in der Ini aus:

Code:
[id1] <-- Sektion-Name
Name=Irgendwer <-- Name des Eintrags (hier "Name") und Wert des Eintrags (hier "Irgendwer"
Du solltest deshalb nicht eine Variable als zweiten Parameter verwenden, sondern eine Konstante (wie zum Beispiel 'Name'), damit du später weißt, wo du den Wert auslesen kannst.


Gruß, Sebastian
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#17
  Alt 31. Dez 2002, 03:37
@Grotesquery

Nach einigem Hin- und Herprobieren hab ich's jetzt endlich hinbekommen so wie ich es will. Ich Danke Dir nochmal für Deine Hilfe und den Beispielcode, ohne dem ich wohl immer noch grübeln würde.
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#18
  Alt 31. Dez 2002, 10:25
Hab nochmal ne Frage!

Geht das auch, wenn daß die Daten auch automatisch abspeichert werden, wenn man auf "Save" klickt??? D.h. daß das Datum automatisch geholt wird und in die Datei reingeschrieben wird, ohne daß man es vorher eingibt???

Und wenn ja, was muß man da im Code ändern???

cu, Lima
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#19
  Alt 31. Dez 2002, 12:19
Hallo lima, kein Problem

Um das Datum zu speichern gehst du genauso vor wie beim abspeichern der einzelnen Zellen auch, nur dass du dafür statt dem Inhalt einer Zelle die den Rückgabewert der Funktionen now oder date nimmst. Da du es ja wahrscheinlich später als String brauchst schlage ich vor den TDateTime-Wert den diese Funktionen zurückliefern als String zu speichern, in einen String kannst du den Wert mit
Delphi-Quellcode:
 TimeToStr(now); //erwiedert die aktuelle Zeit
 DateTimeToStr(now); //erwiedert Datum + Zeit
 DateTimeToStr(date); //erwiedert das Datum
umwandeln, umgekehrt in einen TDateTimeWert mit
Delphi-Quellcode:
StrToTime('00:00:00'); //liefert zum Beispiel einen DateTimewert für 0Uhr
StrToDateTime('datum und zeit')
soviel zum umgang mit Daten und Zeit, jetzt der code um das Datum zu speichern:
Delphi-Quellcode:
ini.WriteString('id'+IntToStr(i),'Datum',DateTimeToStr(date));
//schreibt in die ini in der Sektion idX, in den Eintrag 'Datum' das Datum als String
Hoffe du kommst damit klar, sonst einfach fragen.

Gruß, Sebastian
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#20
  Alt 31. Dez 2002, 12:26
Jetzt funzt's. Danke nochmal.
Das mit dem Datum und der Zeit war schon klar, bis auf Datetimetostr(date).

Bedank ich mich nochmal bei Dir und wünsch Dir einen guten Rutsch nach 2003!!!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 22:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf