Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inis, Arrays oder doch Datenbanken? (https://www.delphipraxis.net/84039-inis-arrays-oder-doch-datenbanken.html)

zecke 10. Jan 2007 13:54


Inis, Arrays oder doch Datenbanken?
 
:hi: allesamt

ich bin mir etwas unschlüssig, wie ich eine bestimmte Struktur von Daten realisieren soll :?

Ich habe ungefähr sowas:
Code:
  A > A
      B > A
      C   B
B    :   C
C    :   D
D         :
:         :
:
Also einen Wert A, über den ergeben sich ein paar weitere Werte. Wenn man dann einen von diesen Werten auswählt, ergeben sich wieder ein paar neue Werte. Das war's dann. Also drei Subkategorien.

Ich liebe Inis und wollte deswegen mit ihnen arbeiten, aber das würden dann gegen Ende des Projektes nahezu 400 Dateien werden, also Ini-Dateien. Ich glaube, dass kann ich einfach nicht bringen. Allerdings sind Inis eben auch ohne Code leicht editierbar, weswegen ich die noch nicht abschreibe. Miene Frage ist jetzt, ob es geschickter wäre die obige Struktur mit Arrays oder doch einer Datenbank zu realisieren?

:nerd:

smudo 10. Jan 2007 13:58

Re: Inis, Arrays oder doch Datenbanken?
 
Also ganz klar ist mir deine Übersicht nicht,
sieht aber eher nach einer Array-Lösung auch.
Musst du die Werte permanent speichern?

René

zecke 10. Jan 2007 14:02

Re: Inis, Arrays oder doch Datenbanken?
 
hi,

ja ich weiß nicht recht, wie ich es veranschaulichen soll. Im Grunde brauche ich einen Wert, dem ich weitere Werte einverleibe, und diesen einverleibten Werten, weitere einverleibe. Mit Inis sicherlich ungeeignet, aber es fällt mir eben am einfachsten.

Die Werte werden dauerhaft gespeichert und sollen mit einem anderen programm jederzeit editiert werden. Laden/Speichern wird auch oft der Fall sein, aber nicht in regelmäßigen Abständen.

Hoffe es hilft weiter :)

edit: habe die Darstellung oben nochmal bearbeitet.

cruiser 10. Jan 2007 14:12

Re: Inis, Arrays oder doch Datenbanken?
 
Müsste doch auch als INI machbar sein hrm... etwa so eine Struktur:

Code:
[Root]
Count=4
Caption0=blah
SubItems0=SI0
Caption1=blubb
SubItems1=SI1
Caption2=bling
Caption3=blopp

[SI0]
Count=2
Caption0=xxx
Caption1=yyy
SubItems1=SI2

[SI1]
Count=3
Caption0=aaa
Caption1=bbb
Caption2=ccc

[SI2]
Count=...
Caption0=...
SubItems0=...

:
:
Damit wäre alles in einem File. Dazu müsstest du halt spezielle Load und Save-Routinen basteln

Elvis 10. Jan 2007 14:16

Re: Inis, Arrays oder doch Datenbanken?
 
Inis sind eigentlich ziemlich eklige Viecher.
Wenn du mit Arrays typisierte Dateien meinst, ebenfalls eklig. Und Arrays sind im Code auch noch friemelig, weil sie ja nur strunzdumme primitive Typen sind...
Kiek dir mal die Hier im Forum suchendpCollection an, vllt magst du es ja. ;)

St.Pauli 10. Jan 2007 14:37

Re: Inis, Arrays oder doch Datenbanken?
 
Ich habe deinen Aufbau nicht ganz verstanden :wink: , aber eventuell willst du deine Daten (so wie es für mich aussieht) hierarchisch speichern. Benutze doch XML.

zecke 10. Jan 2007 16:15

Re: Inis, Arrays oder doch Datenbanken?
 
:hi:


Zitat:

Zitat von St.Pauli
Ich habe deinen Aufbau nicht ganz verstanden Wink , aber eventuell willst du deine Daten (so wie es für mich aussieht) hierarchisch speichern. Benutze doch XML.

Das sieht gut aus, XML! Problem ist nur, dass ich sehr unübersichtliche Lade/Speicher-Prozeduren machen müsste, da ich bis zu 40 Werte auf ein mal auslesen muss. Ich würde zwar nur die Standard-Komponente von Delphi nehmen, aber das sollte ähnlich funktionieren (wenn ich mir da so die Funktionen anschaue). Werde mir XML aber mal anschauen (hier in der DP z.B.), vielleicht kann ich das ja auch zurecht stückeln. :)

Zitat:

Zitat von Elvis
Inis sind eigentlich ziemlich eklige Viecher.
Wenn du mit Arrays typisierte Dateien meinst, ebenfalls eklig. Und Arrays sind im Code auch noch friemelig, weil sie ja nur strunzdumme primitive Typen sind...
Kiek dir mal die Suche in der Delphi-PRAXiSdpCollection an, vllt magst du es ja. :wink:

:freak: Inis sind ganz tolle Viecher :mrgreen:

Habe mir mal dieses hier aus der Code-Lib angeschaut. Ich glaube, ich bin zu faul da durchzusteigen. Abgesehen davon, würde ich ungern andere Units einbinden wollen, geschweige denn soetwas komplexes selbst basteln. :duck:

@cruiser: Ja alles in eine zu packen wäre auch eine Möglichkeit (auf die ich natürlich nicht gekommen bin :D). Werde ich wohl mal antesten :roteyes:

Danke vorerst für die Antworten, darauf kann ich schon mal aufbauen :nerd:

Elvis 10. Jan 2007 16:37

Re: Inis, Arrays oder doch Datenbanken?
 
Zitat:

Zitat von zecke
Abgesehen davon, würde ich ungern andere Units einbinden wollen, geschweige denn soetwas komplexes selbst basteln. :duck:

Heul' nich' gleich rum... :warn:

Delphi-Quellcode:
type
  TEinstellung = class(TCollectionItem)
  published
    property SomeString  : String
      read fSomeString
      write fSomeString;
    property BliBlaBlupps : TmxJsCollection read fBliBlaBlupps;
  end;

  TBliBlaBlupp = class(TCollectionItem)
  published
    property EinInteger : Integer
     read fEinInteger
     write fEinInteger;
  end;

....

constrcutor TEinstellung...
  fBliBlaBlupps := TmxJsCollection.Create(TBliBlaBlupp);
...
Delphi-Quellcode:
var
  einstellung  : TEinstellung;
  einstellungen : TmxJsCollection;
begin
  einstellungen := TmxJsCollection.Create(TEinstellung);

  einstellung := einstellungen.Add() as TEintellung;
  for i := 1 to 100 do
  begin
    with einstellung.BliBlaBlupss.Add() as TBliBlaBlupp do
      EinInteger := i;
  end;

  einstellungen.SaveToFile('plaintext.txt');
  einstellungen.Binary := true;
  einstellungen.SaveToFile('binary.bin');
Ausgelesen wird einfauch nur noch das hier und gut ist:

Delphi-Quellcode:
var
  einstellung  : TEinstellung;
  einstellungen : TmxJsCollection;
begin
  einstellungen := TmxJsCollection.Create(TEinstellung);
  einstellungen.LoadFromFile('plaintext.txt');

  for i := 0 to einstellungen.Count - 1 do
  begin
    einstellung := einstellungen[i] as TEintellung;
    writeLn(einstellung.SomeString);
    for j := 0 einstellung.BliBlaBlups.Count - 1 do
      writeLn('-> ', TBliBlaBlupp(einstellung.BliBlaBlups[j]).EinInteger);
  end;
Dat ist hierarchisch und beim Definieren der Klassen zum Halten der Daten bestimmst du die Struktur der Datei gleich mit.
Außerdem kannst du Daten laden, die mit einer vorherigen Version deines Programmes gespeichert wurden, da DFM streaming abwärtskompatibel ist. (Du kannst ja auch ein D7 Form in BDS2006 öffnen :zwinker: )


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