Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TListView: Wie speichert/lädt man Daten?! (https://www.delphipraxis.net/26069-tlistview-wie-speichert-laedt-man-daten.html)

MCXSC 17. Jul 2004 15:46


TListView: Wie speichert/lädt man Daten?!
 
Hallo!

Ich habe ein großes Problem, bzw. habe keine Ahnung, wie die TListView funktionieren. Folgendes:

Ich wollte ein Termin-Verwaltungstool proggen, bei dem man die Daten der Termine ganz normal in Edit-Feldern eingibt und diese in eine Ini-Datei gespeichert werden (z.B. Datum=...).

Diese Ini-Datei soll dann ausgelesen werden und die einzelnen Daten in die jeweilige Spalte (vorher angelegt) der TListView eingetragen werden.

Doch da ist mein Problem:

Ich weiß nicht, wie man Daten in die TListView einliest. Ich habe im Moment 3 Spalten (Datum, Uhrzeit,
Betreff). In der Ini Datei sind sie so gespeichert:

[Datum - Uhrzeit]
Datum=...
Uhrzeit=...
Betreff=...

(Ich weiß, das die Sache mit der Ini katastrophal ist, aber nur zur Erklärung)

Wie kann ich nun den Betreff, das Datum und die Uhrzeit in die jeweiligen Spalten einlesen und das auch mit mehren Terminen?

Kann mir jemand helfen?

mcXsc

rantanplan99 17. Jul 2004 16:53

Re: TListView: Wie speichert/lädt man Daten?!
 
Delphi-Quellcode:
var
  li: TListItem;
begin
  ...
 
 
  li := ListView1.Items.Add;

  li.Caption := sDatum; // 1te Spalte
  li.SubItems.Add(sUhrzeit); // 2te Spalte
  li.SubItems.Add(sBetreff); // 3te Spalte

  ...
end;
(Edit: hab doch glatt vergessen das Delphi-Code-Tag zu schleissen)

MCXSC 17. Jul 2004 17:08

Re: TListView: Wie speichert/lädt man Daten?!
 
Ah ja, das habe ich gesucht. Danke!

MCXSC 18. Jul 2004 17:10

Re: TListView: Wie speichert/lädt man Daten?!
 
Okay, den ersten Eintrag kann ich anzeigen... aber nicht alle.... Wie wiederhole ich das mit der nächsten Ini-Section?

rantanplan99 18. Jul 2004 17:24

Re: TListView: Wie speichert/lädt man Daten?!
 
Du musst einfach den block wiederholen mit den werten für den nächsten eintrag:

Delphi-Quellcode:
  li := ListView1.Items.Add;
  li.Caption := sDatum; // 1te Spalte
  li.SubItems.Add(sUhrzeit); // 2te Spalte
  li.SubItems.Add(sBetreff); // 3te Spalte

MCXSC 18. Jul 2004 17:32

Re: TListView: Wie speichert/lädt man Daten?!
 
Ja, das weiß ich ja. ABer genau da ist das Problem: Wie mache ich das?

rantanplan99 18. Jul 2004 17:55

Re: TListView: Wie speichert/lädt man Daten?!
 
Das kann ich dir auch nicht sagen, ich weiss ja nicht wie du die Daten abgespeichert hast, oder wie deine Daten vorliegen oder was auch immer.

MCXSC 19. Jul 2004 19:45

Re: TListView: Wie speichert/lädt man Daten?!
 
Habe ich doch. Beispiel meiner Ini-Datei:

Zitat:

[12.12.2004 - 12:31]
Datum=12.12.2004
Uhrzeit=12:31
Betreff=Treffen I

[13.12.2004 - 12:11]
Datum=13.12.2004
Uhrzeit=12:11
Betreff=Treffen II
[edit=MrSpock]Doppelpost gelöscht. Mfg, MrSpock[/edit]

rantanplan99 19. Jul 2004 20:05

Re: TListView: Wie speichert/lädt man Daten?!
 
Delphi-Quellcode:
var
  i: integer;
  Sec: TStrings;
  Ini: TIniFile;
  sDatum, sUhrzeit, sBetreff: String;
  li: TListItem;
begin
  Sec := TStrings.Create;
  Ini := TIniFile.Create('Termine.ini');
  Ini.ReadSections(Sec);

  for i := 0 to Sec.Count - 1 do begin
    sDatum := ini.ReadString(Sec.Strings[i], 'Datum', '');
    sUhrzeit := ini.ReadString(Sec.Strings[i], 'Uhrzeit', '');
    sBetreff:= ini.ReadString(Sec.Strings[i], 'Betreff', '');
 
    li := ListView1.Items.Add;
    li.Caption := sDatum;
    li.SubItems.Add(sUhrzeit);
    li.SubItems.Add(sBetreff);
  end;

  Ini.Free;
  Sec.Free;
end
Ich habs zwar nicht ausprobiert (werd ich auch nicht), sollte aber so funktionieren. Wer Fehler findet darf sie behalten (oder selbst korrigieren) *g*

MCXSC 24. Jul 2004 21:09

Re: TListView: Wie speichert/lädt man Daten?!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das geht auch nicht. Da kommt immer die Fehlermeldung "Abstrakter Fehler". Ich habe den QUelltext mal angehangen, vielleicht kann mir damit ja jemand helfen...

rantanplan99 25. Jul 2004 08:39

Re: TListView: Wie speichert/lädt man Daten?!
 
Ich habs mal getestet.

1) statt TStrings musst du TStringList verwenden

2) for i := 0 to Sec.Count - 1 do begin

Warum es dann aber keine Sections findet weiss ich nicht. Wenn ich es mit WIN.INI probiere funktioniert es (mal abgesehen davon dass keine Werte in das ListView geschrieben werden sondern nur leere Zeilen hinzugefügt werden.

Ich schlage vor du überlegst dir ne andere Art und Weise des abspeicherns deiner Werte.

rantanplan99 25. Jul 2004 08:53

Re: TListView: Wie speichert/lädt man Daten?!
 
Hab den anderen Fehler gefunden. Der sucht die Ini Datei im Windows Verzeichnis, findet die natürlich nicht, und erstellt eine neue, die natürlich leer ist.

hier nochmal der komplett korrigierte sourcecode
Delphi-Quellcode:
var
  i: integer;
  Sec: TStringList;
  Ini: TIniFile;
  sDatum, sUhrzeit, sBetreff: String;
  li: TListItem;
begin
  Sec := TStringList.Create;
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Termine.ini');
  Ini.ReadSections(Sec);
  for i := 0 to Sec.Count-1 do begin
    sDatum := ini.ReadString(Sec.Strings[i], 'Datum', '');
    sUhrzeit := ini.ReadString(Sec.Strings[i], 'Uhrzeit', '');
    sBetreff:= ini.ReadString(Sec.Strings[i], 'Betreff', '');
    li := ListView1.Items.Add;
    li.Caption := sDatum;
    li.SubItems.Add(sUhrzeit);
    li.SubItems.Add(sBetreff);
  end;
  Ini.Free;
  Sec.Free;
end;

MCXSC 26. Jul 2004 15:19

Re: TListView: Wie speichert/lädt man Daten?!
 
Danke Leute! Ihr seid die besten!

Nalincah 26. Jul 2004 15:56

Re: TListView: Wie speichert/lädt man Daten?!
 
Zitat:

Zitat von rantanplan99
Hab den anderen Fehler gefunden. Der sucht die Ini Datei im Windows Verzeichnis, findet die natürlich nicht, und erstellt eine neue, die natürlich leer ist.

hier nochmal der komplett korrigierte sourcecode
Delphi-Quellcode:
var
  i: integer;
  Sec: TStringList;
  Ini: TIniFile;
  sDatum, sUhrzeit, sBetreff: String;
  li: TListItem;
begin
  Sec := TStringList.Create;
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Termine.ini');
  Ini.ReadSections(Sec);
  for i := 0 to Sec.Count-1 do begin
    sDatum := ini.ReadString(Sec.Strings[i], 'Datum', '');
    sUhrzeit := ini.ReadString(Sec.Strings[i], 'Uhrzeit', '');
    sBetreff:= ini.ReadString(Sec.Strings[i], 'Betreff', '');
    li := ListView1.Items.Add;
    li.Caption := sDatum;
    li.SubItems.Add(sUhrzeit);
    li.SubItems.Add(sBetreff);
  end;
  Ini.Free;
  Sec.Free;
end;

Ich hab gelernt das man nach einem Create wie bei "ini" oder "sec" das ganze in einen Try..Finally..End-Block packen sollte:

Delphi-Quellcode:
var
  i: integer;
  Sec: TStringList;
  Ini: TIniFile;
  sDatum, sUhrzeit, sBetreff: String;
  li: TListItem;
begin
  Sec := TStringList.Create;
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Termine.ini');
  try
    Ini.ReadSections(Sec);
    for i := 0 to Sec.Count-1 do begin
      sDatum := ini.ReadString(Sec.Strings[i], 'Datum', '');
      sUhrzeit := ini.ReadString(Sec.Strings[i], 'Uhrzeit', '');
      sBetreff:= ini.ReadString(Sec.Strings[i], 'Betreff', '');
      li := ListView1.Items.Add;
      li.Caption := sDatum;
      li.SubItems.Add(sUhrzeit);
      li.SubItems.Add(sBetreff);
    end;
  finally
    Ini.Free;
    Sec.Free;
  end;
end;

MaM 2. Aug 2005 21:58

Re: TListView: Wie speichert/lädt man Daten?!
 
[12.12.2004 - 12:31]
Datum=12.12.2004
Uhrzeit=12:31
Betreff=Treffen I

[13.12.2004 - 12:11]
Datum=13.12.2004
Uhrzeit=12:11
Betreff=Treffen II

Wie kann ich im oben angebenen Format meine Werte in der Ini speichern?
Speziell das Datum und die Uhrzeit in der Section.




MaM

MaM 3. Aug 2005 12:08

Re: TListView: Wie speichert/lädt man Daten?!
 
Ich meine natürlich nicht, wie ich generell in eine Ini schreibe, das ist kein Problem. Nur weiß ich nicht, wie ich das Datum und die Uhrzeit in die Section kriege.




MaM

The-X 4. Aug 2005 00:42

Re: TListView: Wie speichert/lädt man Daten?!
 
Delphi-Quellcode:
TIniFile.WriteDate
TIniFile.WriteTime
TIniFile.WriteDateTime
und dazugehörig:
Delphi-Quellcode:
TIniFile.ReadDate
TIniFile.ReadTime
TIniFile.ReadDateTime
die Werte sind jeweils vom Typ TDateTime

Luckie 4. Aug 2005 01:52

Re: TListView: Wie speichert/lädt man Daten?!
 
Zitat:

Zitat von MCXSC
Das geht auch nicht. Da kommt immer die Fehlermeldung "Abstrakter Fehler". Ich habe den QUelltext mal angehangen, vielleicht kann mir damit ja jemand helfen...

Nimm statt TStrings TStringList. TStrings ist nur eine abstrakte Klasse, die nur als Bauplan für davon abgeleiteten Klassen benutzt wird.

Luckie 4. Aug 2005 01:53

Re: TListView: Wie speichert/lädt man Daten?!
 
Zitat:

Zitat von MaM
Ich meine natürlich nicht, wie ich generell in eine Ini schreibe, das ist kein Problem. Nur weiß ich nicht, wie ich das Datum und die Uhrzeit in die Section kriege.

Für eine neuen Frage erstell bitte einen neuen Thread.


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