Autor Beitrag
pwsolaris
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 71
Erhaltene Danke: 1

MS DOS, Win 95, Win 98, Win ME, Win XP, Win Vista, Win 7 Ultimate
Delphi 5 Enterp., Delphi 2007, Delphi 2009, Informix 4GL, VB .NET, MS/SQL, PL/SQL
BeitragVerfasst: Fr 29.04.11 18:30 
Hallo,

dieses mal suche ich ein wenig Inspiration bei euch.

Ich suche ein Lösung, Daten die immer in der gleichen Konstellation auftreten, in einer Datei zu sichern.

Die Daten sind wie folgt aufgebaut:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
Person:
  -Name
  -Alter
  -Zeitpunkt
    -Datum
    -Gewicht
    -Größe


Ich habe dann später vor, anhand der gespeicherten Daten einen Zeitraum zu berechnen, verlorenes oder zugelegtes Gewicht bzw. Größe auszugeben und natürlich zu jedem Datum die einzelnen Werte auszulesen und anzuzeigen.
Die Daten sollen dann auch für jede Person einzeln abgelegt werden.

Ich möchte dazu nicht extra eine Datenbank benutzen, da hier ja keine riesigen Massen an Daten auflaufen werden... jedoch habe ich zur Zeit keine Ahnung, was da so am besten wäre...

Gibt es außer einer INI-Datei noch andere Möglichkeiten, die sich evtl. eher anbieten?
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 29.04.11 18:35 
Clientdataset entweder XML oder RAW ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 29.04.11 21:07 
Hey,

wenn du die Daten einfach nur auch der Festplatte ablegen willst, dann kannst du das ganze per FileStream auf die HDD schieben.
Vorteile: es geht schnell
Nachteile: man kann die Daten nicht mehr mit einem Editor bearbeiten oder lesen (wie das zB bei XML geht)
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
type
  TData = packed record
    Datum: TDate;
    Gewicht, Größe: Single;
  end;
  PData = ^TData;

  TPerson = class(TObject)
  private
    fName: String;
    fAlter: Integer;
    fDataList: TList;
  public
    procedure SaveToStream(Stream: TStream);
    procedure LoadFromStream(Stream: TStream);
  end;

procedure WriteString(const str: String; Stream: TStream);
var
  len: Integer;
begin
  len := Length(str);
  Stream.Write(len, SizeOf(len));
  if Length(str) > 0 then
    Stream.Write(str[1], len);
end;

function ReadString(Stream: TStream): String;
var
  len: Integer;
begin
  len := 0;
  Stream.Read(len, SizeOf(len));
  SetLength(result, len);
  if Length(result) > 0 then
    Stream.Read(result[1], len);
end;

procedure TPerson.SaveToStream(Stream: TStream);
var  
  i: Integer;
  p: PData;
begin
  WriteString(fName, Stream);
  Stream.Write(fAlter, SizeOf(fAlter));
  i := fDataList.Count;
  Stream.Write(i, SizeOf(i));
  for i := 0 to fDataList.Count-1 do begin
    p := fDataList[i];
    Stream.write(p^, SizeOf(p^));
  end;
end;

procedure TPerson.LoadFromStream(Stream: TStream);
var 
  i, count: Integer;
  p: PData;
begin
  fName := ReadString(Stream);
  Stream.Read(fAlter, SizeOf(fAlter);
  Stream.Read(count, SizeOf(count);
  for i := 0 to count-1 do begin
    new(p);
    Stream.read(p^, SizeOf(p^));
    fDataList.add(p);
  end;  
end;


MfG Bergann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
COMMANDER86
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 167

Win XP, Win Vista
D3 Prof., D7 Pers., Lazarus
BeitragVerfasst: Sa 30.04.11 18:40 
N'Abend,

in solchen Fällen greife ich immer gerne zur CSV-Datei. Ich weiß, das ist sicherlich nicht die beste Methode...

In diesem Fall würde ich zwei "Tabellen" / CSV-Dateien anlegen:

person.csv

Index;Name;Alter;Zeitpunkt

und ... kA... daten.csv

Personenindex;Datum;Gewicht;Größe

Die beiden lassen sich recht easy verknüpfen. Laden und Entladen würde ich in einer StringList. Ich weiß... dirty-way. Aber funktioniert.

Maybe auch direkt alles in eine Datei... die wird mitunter groß (Stichwort: Redundanzen), macht die Bearbeitung aber umso einfacher.

Gruß
Fabian

_________________
Streichen Sie bitte sämtlichen Sarkasmus aus vorhergehender Nachricht. Dann wissen Sie, was ich sagen möchte. Meine Lösungen sind die vermutlich Umständlichsten, aber sie funktionieren (bei mir). ;)