Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Frage zur Methodik der Datenspeicherung (https://www.delphipraxis.net/106486-frage-zur-methodik-der-datenspeicherung.html)

quendolineDD 11. Jan 2008 15:38


Frage zur Methodik der Datenspeicherung
 
Hallo Leute, ich programmiere derzeitig ein Programm, welches mir es erleichtern soll Leute in den ihren Qualifikationen entsprechendene Bereichen einzuteilen.

Dies wollte ich alles Objektorientiert umsetzen, aber nun stellt sich mir eine Frage.
Ich habe von jeder Person neben den Namen und anderen Personenbezogenen Daten auch noch deren Qualifikationsbereiche zu speichern.
D.h. jede Person kann maximal für 11 Bereiche qualifiziert sein.

Nun stellt sich für mich die Frage, wie ich am Besten dies speichere. Sollt ich dies als Array[0..10] of boolean machen, wo für jeden Bereich ein Feld steht und 0 und 1 jeweils deren Qualifikation für diesen beschreibt oder sollte ich die absoluten Qualifikationen (also zum Beispiel: 1,3,5) speichern?

Ich bin mir da über das sinnvollste noch nicht ganz im klaren ...
Was denkt ihr?

Grüße

STS301 11. Jan 2008 15:47

Re: Frage zur Methodik der Datenspeicherung
 
wie willst du es speichern, längerfristig oder für kürzere Zeit
kurzfristig als variable oder array

als .txt Datei, oder wenn möglich als .dll Datei....

quendolineDD 11. Jan 2008 15:50

Re: Frage zur Methodik der Datenspeicherung
 
Da sich die Qualifikation eines Mitarbeiters nur nach best. Ausbildungen ändert, werde ich die Daten langfristig speichern wollen, jedoch als *.txt.

STS301 11. Jan 2008 15:53

Re: Frage zur Methodik der Datenspeicherung
 
ich hoffe das hilft

quendolineDD 11. Jan 2008 16:55

Re: Frage zur Methodik der Datenspeicherung
 
Wie ich die Daten an sich speichern kann ist mir bewusst. Mir ging es eher um die Frage, wie ich die Daten in der Klasse unterbringe.
Also wenn ich jetzt beispielsweise die Klasse habe:
Delphi-Quellcode:
TPerson = class (TObject)
public
Qualifikation : array[0..11] of Boolean
So in der Richtung meinte ich meine Frage.
Bzw. wenn ich das ganze dann binär abspeicher muss ich mir ja um die Datensturktur keine Gedanken machen?!
Das Ding was mich beschäftigt ist ja halt, das ich irgendwie jeder Person die Qualifikation der jeweiligen Bereiche zuordnen können muss um diese dann im weiteren Verlauf in den ihren Bereichen zuzuordnen.

D.h. was sich am Besten umzusetzen lohnt. Ein Array wie im Beispiel oben oder wie von mir schon genannt die absolute Bezeichnung der einzelnen Bereiche der Person.

Oder gibt es noch passendere Methoden, diese Daten unterzubringen?

Letztendlich werde ich alles in eine *.txt-Datei speichern.
Grüße

sirius 11. Jan 2008 16:56

Re: Frage zur Methodik der Datenspeicherung
 
Zitat:

Zitat von STS301
wie willst du es speichern, längerfristig oder für kürzere Zeit
kurzfristig als variable oder array

als .txt Datei, oder wenn möglich als .dll Datei....

DLL :gruebel: zum speichern? Nee, ganz gewiss nicht :zwinker: Eine DLL beinhaltet Funktionen die man aus anderen Programmen nutzen kann.
Und txt dürfte auch nicht das optimale darstellen.

du musst dir als erstes überlegen, ob eine Datenbank sinnvoll ist. Wenn ja, dann kannst du dort schön Tabellen anlegen und deine Mitarbeiter drin speichern.
Wenn der Datenbestand recht überschaulich ist, dann wären die nächsten Überlegungen XML oder INI. Oder du machst es ganz platzsparaned mit einer eigenen typisierten Datei bzw. einem TFilestream.

Edit: [Mir fehlt der rote Kasten]
Zitat:

Oder gibt es noch passendere Methoden, diese Daten unterzubringen?
Das hängt eher davon ab, wie du letztenendes speichern und laden willst. Du kannst zum Beispiel (im Falle einer eigenen Speichervariante) alle Daten in ein record nehmen (keine dynamischen Variablen: String, dynamisches Array) und den Record in einen FileStream schreiben und wieder auslesen.
Oder (deswegen nimmt man ja auch Klassen) du gibst deiner Klasse eine eigene Methode, die alle Daten so zurchtbiegt, dass sie leicht zu speichern sind.

quendolineDD 11. Jan 2008 16:58

Re: Frage zur Methodik der Datenspeicherung
 
Ich habe gerade mal 20 Mitarbeiter, trotzdem will ich mir auf Dauer etwas Arbeit sparen und die Einteilung über das Programm realisieren.
Eine Datenbank lohnt sich nicht. Das ganze wird ja dann an meinem Rechner auf Arbeit laufen.
Mit Typisierte Datei meinst du dann etwas wie ein File of xxx ?

Insgesamt habe ich bisher immer nur in einem kleinen Horizont programmiert, doch hier im Forum gibt es ja genug Beiträge dazu :)

STS301 11. Jan 2008 17:00

Re: Frage zur Methodik der Datenspeicherung
 
dann ist es am einfachsten mit einem .txt File

wieso geht es mit dll nicht, kann man direkt keine Variable verändern??

quendolineDD 11. Jan 2008 17:05

Re: Frage zur Methodik der Datenspeicherung
 
Eine DLL ist mir bekannt als Datei, welche Funktionen enthält.

Also ich will umebdingt das ganze Projekt OOP durchziehen, damit wir das in der ganzen Firma benutzen können und jeder Schichtleiter damit am Ende arbeiten kann.

Bei dem Datenaufkommen würde sich etwas anderes als eine Textdatei meiner Meinung nach garnicht lohnen.
Ich wollte mir halt hier ein paar Informationen einholen, wie ich die versch. Bereiche der Mitarbeiter am Besten mit unterbringen kann um diese letzendlich zu speichern.

Grüße

STS301 11. Jan 2008 17:06

Re: Frage zur Methodik der Datenspeicherung
 
dann wäre sogar eine Datenbank gut, oder vielleicht eine INI Datei

sirius 11. Jan 2008 17:07

Re: Frage zur Methodik der Datenspeicherung
 
Das Problöem bei File of xxx ist, dass der Name dann eine festgelegt Maximallänge (<=255 Zeichen) haben muss und als xx nimmst du dann einen Record:
Delphi-Quellcode:
type TDaten=record
       name:string[50];
       Quali:array[1..11] of boolean
end;
Aber typisierte Dateien entsprechen nicht deiner Vorgabe von OOP. Dafür ist TFileStream besser.

Noch die andere Frage: Array oder etwas anders. Du kannst 11 Qualifikationen auch in 32bit unterbringen:
Delphi-Quellcode:
type TQuali=(Q1,Q2,Q3,Q4,Q5,Q6,Q7,..);
     TQualis=set of TQuali;

quendolineDD 11. Jan 2008 17:10

Re: Frage zur Methodik der Datenspeicherung
 
Aber die Firma wird keine Installation von Datenbanken erlauben. Letztendlich muss ich schauen ob das Programm von der IT-Abteilung überhaupt genehmigt wird.
Ich darf ja nicht einfach was auf die Rechner aufspielen.

Ich würde mir evtl. mal anschauen wie man mit einem XML-File umgeht, aber letzendlich reden wir an meiner eigentlichen Fragestellung vorbei.

MIr geht es darum, wie ich die Daten in der Klasse unterbringen soll ... als statischer Array of String oder eben die absoluten Daten

EDIT:

Ich werde das ganze dann wohl per Filestream speichern und auslesen. Was mir aber immer noch Kopfzerbrechen bereitet ist, wie ich die einzelnen Daten der Personen nun in die Klasse integriere?!

Vielleicht bietet sich hier ja gar eine StringList an.
Delphi-Quellcode:
TPerson = class(TObject)
public
name: string;
Quali: TStringlist;
end;
Sodass ich im constructor von TPerson die Stringliste initialisiere und dann eine property zum Setzen der Eigenschaften mache, was dann das einschreiben der Daten vornimmt und letztendlich alles mit abspeichert.

wicht 11. Jan 2008 17:31

Re: Frage zur Methodik der Datenspeicherung
 
Du sollst ein Programm schreiben, aber weißt nicht, ob es benutzt werden darf? Ää okay..
Ich würds ungefähr so machen, wie sirius sagte:

Delphi-Quellcode:
type
  TQualifikation = (quA, quB, quC, ...);
  TQualifikationen = set of TQualifikation;

  TMensch = class(TObject)
  public
    Name: string;
    Qualis: TQualifikationen;
  end;
Das wäre IMO ein schöner Ansatz, was OOP betrifft. XML speichern kannst du gut mi den JEDI Teilen, JvSimpleXML heißt die Unit glaube ich. Eventuell ist in der Firma ja sogar eine DB vorhanden, wo man das "zupacken" könnte?

quendolineDD 11. Jan 2008 17:35

Re: Frage zur Methodik der Datenspeicherung
 
Das Problem ist, das ich das Programm dann vollständig mit Quellcode halt an die IT-Abteilung übergeben muss und die das am Ende genehmigen müssen.
Aufgrund von Spionage ist da Infineon sehr ... naja :)

Ich schaue mal was das set of ist, das ist mir bisher noch nicht geläufig :\

Aber danke für die rege Diskussion :o)

PS:

Ich soll nicht, ich will.

Ghostwalker 11. Jan 2008 17:39

Re: Frage zur Methodik der Datenspeicherung
 
Wie wärs mit folgender Variante:

Delphi-Quellcode:
Type
   TQualiIDS = (quali1,quali2,quali3,quali4,quali5,quali6,quali7,quali8,quali9,quali10,quali11);
   TQualis = set of TQualiIDS; //fürs speichern in der Datei, DB oder was auch immer;

const
   TQualibez = array [TQualiIDS] of String (
   'Qualification 1',
   'Qualification 2',
   'Qualification 3',
   'Qualification 4',
   'Qualification 5',
   'Qualification 6',
   'Qualification 7',
   'Qualification 8',
   'Qualification 9',
   'Qualification 10',
   'Qualification 11');

Type
  TPerson = class(Tobject)
  private
     fquali : TQualis;
   :
Damit erschlägst du gleich 3 Dinge auf einmal. Zum einen der interne Zugriff, der, mit den entsprechenden Bezeichnern bei den TQualiIDS, transparent abläuft. Für die Speicherung in einer
Datei hast die TQualis, das sehr platzsparend ist. Und schlussendlich für Ausgaben (ob Drucker oder Bildschirm is wurscht), hast du gleich deine Texte :)

quendolineDD 11. Jan 2008 17:45

Re: Frage zur Methodik der Datenspeicherung
 
Heißt das aber nun, das jedes fQuali alle Qualifikationen von 1 bis 11 enthält, welche ja zu TQualiIDS reingeschriebn wurden oder sind die zu TQUaliIDS zugeordneten Werte bei dem set nur die möglichen Werte? Ich glaub hier fehlt es mir etwas an Wissen, welches ich wohl erstmal auffrischen muss :\
Ich werde mir das mal zu Hause anschauen wo ich Delphi zur Verfügung habe...

Sieht aber schonmal interessant aus :)

Danke und Grüße

wicht 11. Jan 2008 17:50

Re: Frage zur Methodik der Datenspeicherung
 
Wenn du nicht "sollst" und bei der genannten Firma arbeitest, dann würde ich vorher schauen, ob das möglich ist und gebraucht wird, weil ich mir vorstellen könnte, dass einfach so "Nein" gesagt wird.... Sonst ist die Enttäuschung am Ende eventuell da...

Nachtrag: TQualiIDS enthält die möglichen Werte. Du kannst in das Set TQualis alle Werte aus TQualiIDS reinpacken oder rausnehmen. Einfach mal nach der set-Geschichte Googeln, das ist sehr einfach zu verstehen und Beispiele sollte es in Masse geben...

Ghostwalker 11. Jan 2008 17:55

Re: Frage zur Methodik der Datenspeicherung
 
TQualiIDS ist lediglich eine Aufzählung. Das definiert dir quasi nur Namen für einzelne Werte und macht das ganze Spiel lesbar und transparent :)

(Tip: Laß dir einfach mal ord(q8) oder so ausgeben :) )

TQualis ist nun ein Set (Mengentyp). Jedem Element von TQualiIDS wird im Set ein Bitmuster zugeordnet, so das die einzelnen Elemente unterschieden werden können. Wichtig ist, das du max. 256 verschiedene Werte in einem Set unterbringen kannst (hat nur 1 Byte).

Naja..die Stringkonstanten erklären sich glaub ich von selbst :)

sirius 11. Jan 2008 18:12

Re: Frage zur Methodik der Datenspeicherung
 
Infineon (wie überhaupt die gesamte HL-Bracnhe) ist nicht gerade bekannt dafür, Informationen des Unternehmens anders zu speichern, als sie es selbst wollen.

grenzgaenger 11. Jan 2008 18:51

Re: Frage zur Methodik der Datenspeicherung
 
Zitat:

Zitat von sirius
Infineon (wie überhaupt die gesamte HL-Bracnhe) ist nicht gerade bekannt dafür, Informationen des Unternehmens anders zu speichern, als sie es selbst wollen.

nicht nur die HL branche, sondern eigentlich jedes grössere unternehmen. und das ist durchaus sinnvoll.

wenn sie dein progy screenen und sehen, dass du personenbezogene daten im klartext auf die platte legst, da bekommt der sicherheitsbeauftragte einen kollaps. also du musst deine daten unbedingt verschlüsseln und ordentlich ablegen. ich empfehle dir, hierfür eine datenbank mit verschlüsselung zu verwenden. hier gehen IMHO zwei wege (a) eine embedded DB oder (b) eine DB welche in deiner firma vorhanden ist (z. B. Access über ADO).

wünsch dir noch viel spass
GG

angos 11. Jan 2008 19:04

Re: Frage zur Methodik der Datenspeicherung
 
Hi,

das mit der erhebung der persönlichen daten wurde ja gerade schon eingeräumt, daher spar ich mir das mal ;)

grundsätzlich ´wäre ja für so einen fall ein xml-file nicht verkehrt, welches dann aber auch verchlüsselt werden müsste ;)

gerade bei so kleinen datenmengen kann ich verstehen, dass man nicht unbedingt auf ein ganzes dbms zurückgreifen will


gruß
ansgar

quendolineDD 12. Jan 2008 07:06

Re: Frage zur Methodik der Datenspeicherung
 
Solang ich die personenbezogenen Daten auf den Namen verringere, wird dies wohl keine Schierigkeiten machen ... die haben wir im Reinraum eh alle auf dem Rücken.

Danke für die ganzen Vorschläge, das mit dem SET OF ist wohl die für OOP praktikabelste Vorgehensweise.

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz