Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 3 Bedingungen in ein Array speichern
Basti1207 - Mi 13.05.09 12:51
Titel: 3 Bedingungen in ein Array speichern
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
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
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 - Mi 13.05.09 12:58
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TBenutzer = record Name:String; PasswordHash:packed array[0..63] of Byte; Punkte:Integer; end;
var UserData : array of TBenutzer; |
HTH
Narses - Mi 13.05.09 13:35
Moin!
Basti1207 hat folgendes geschrieben : |
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
Basti1207 - 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
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
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; |
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 - Mi 13.05.09 16:37
Moin!
Basti1207 hat folgendes geschrieben : |
| 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
Delete - 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 - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!