Autor Beitrag
Basti1207
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 13.05.09 12:51 
Guten Tag, ich sitze jetzt schon fast seit einer Woche an einem Problem, welches eigenlich einfach klingt.. Dies ist es wahrscheinlich aber aber irgendwie stehe ich aufm Schlauch..

Also kurze Einweisung ;)
Ich möchte ein (oder eventuell auch 2 wenn dadurch besser lösbar..) Arry(s) erstellen, in denen Folgendes abgespeichert werden soll:
- Benutzername
- Passwort
- Berechtigung (integer Wert: 1,2 oder 3)
Bis dahin kein Problem. Doch nun soll hinzugefügt werden können, Wer (also welcher Benutzername) an welchen Datum wie viele Punkte gemacht hat.
Bis jetzt habe ich versucht das Folgendermaßen zu lösen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
TPunkte =record
        datum : Tdate;
        points : integer;
        end;
TUsers = record
    benutzername : string[64];
    passwort : string[64];
    rechte : integer;
    punkte : TPunkte;
    end;

Jedoch kann ich damit nur speichern Wer an einem bestimmten Datum wie viele Punkte gemacht hat und nich für mehrer Daten..
Die Lösung wäre etwas wie dieses hier
ausblenden Delphi-Quelltext
1:
Benutzername[id].Datum[130509] := 5000;					

Aber das geht ja leider nicht und dient nur dazu euch zu erklären wie ich dies Meine..
Also das ich sagen kann Benutzer123 hat am 13.05.09 5000 Punkte gemacht, Benutzer312 hat am 12.05.09 2000 Punkte gemacht etc..

Ich hoffe ihr habt verstanden was ich meine weil irgendwie weiß ich nicht so richtig wie ichs erklären soll :/

mfg und schonmal danke ;)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 13.05.09 12:58 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type TBenutzer = record
    Name:String;
    PasswordHash:packed array[0..63of Byte; //SHA512 Hash
    Punkte:Integer;
    //...
end;

var
    UserData : array of TBenutzer;


HTH

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 13.05.09 13:35 
Moin!

user profile iconBasti1207 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
TPunkte =record
        datum : Tdate;
        points : integer;
        end;
TUsers = record
    benutzername : string[64];
    passwort : string[64];
    rechte : integer;
    punkte : array of TPunkte;
    end;
Wenn ich das richtig verstanden habe, sollte das schon reichen. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Basti1207 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 13.05.09 16:23 
Guten Nachmittag ;)
Ja, das sollte genau die Lösung des Problem sein :)
Doch nun taucht ein weiteres Problem auf wenn ich TUsers auf die Festplatte schreiben will
ausblenden Delphi-Quelltext
1:
[Fehler] Unit1.pas(47): Typ 'TUsers' benötigt Finalization - nicht im Dateityp erlaubt					

So sieht atm meine Definition der Records aus sowie die Varibalen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
TPunkte =record
        points : integer;
        end;
TUsers = record
    benutzername : string;
    passwort : string;
    rechte : integer;
    punkte : array of TPunkte;
    end;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
var
  Form1: TForm1;
  Users : array of TUsers;
  datei : file of TUsers;


Hoffe ihr habt auch darauf so ne schnelle und tolle Antwort :)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 13.05.09 16:37 
Moin!

user profile iconBasti1207 hat folgendes geschrieben Zum zitierten Posting springen:
Doch nun taucht ein weiteres Problem auf wenn ich TUsers auf die Festplatte schreiben will
Tja, dieses Konstrukt kann man allerdings (in deinem Fall leider) nicht mehr in eine typisierte Datei schreiben. :nixweiss:

Lösung: Eigenes Dateiformat mit TFileStream bauen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 13.05.09 16:42 
Bessere Lösung: eine Datenbank verwenden ;), aber das hängt vom eigenen Wissensstand sowie der Delphi-Edition ab.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 14.05.09 16:40 
Bei einem file of Konstrukt muss die Grösse eines einzelnen Eintrages fix sein. Du möchtest aber für einen Eintrag eine Variable Menge an Daten (Punktestände) speichern. Ich würde dir dazu die Verwendung von XML empfehlen.

Generell empfehle ich, über die Verwendung einer Datenbank, sowie objektorientierteres Design und gehashte Passwortspeicherung nachzudenken.