AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kontrolliertes Speichern bei dpCollection?
Thema durchsuchen
Ansicht
Themen-Optionen

Kontrolliertes Speichern bei dpCollection?

Ein Thema von alcaeus · begonnen am 13. Apr 2005 · letzter Beitrag vom 13. Apr 2005
Antwort Antwort
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 09:15
Hallo allerseits,

ich versuche grad ein Optionssystem mit Hilfe der dpCollection zu erstellen. Nun stehe ich vor dem Problem, dass ich um eine Option zu suchen, erstmal die Ganze Collection durchlaufen muesste. Wenn ich allerdings Konstanten fuer die Optionen erstelle, und die Optionswerte genau in der Reihenfolge hinzufuege, kann ich davon ausgehen dass die Werte in genau der Reihenfolge abgespeichert werden?
Also folgendes Beispiel: ich fuege Wert1, Wert3, Wert2 der Collection hinzu und speicher das Ding. Wenn ich die Collection wieder aus der Datei lade, haben die Werte immer noch dieselbe Reihenfolge? In dem Fall koennte ich die Optionswerte naemlich mit Indexen ansprechen, was natuerlich geschickter (und schneller) waere.
Ich hoffe jemand kann die Frage beantworten...

Thanx and Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 09:36
Ganz ehrlich. Würde darauf verzichten feste Indizies zu vergeben. Musst nur mal einen Wert mittendrin einfügen und vergessen die Indizies zu aktualisieren. Schon triffst du auf Probleme, die du eventuell nur schwer nachvollziehen kannst.

Soll dieses Optionssystem Einstellungen für das Programm speichern? Wenn ja würde ich die Optionen am Programm start in Globale Variable oder ähnlichem lesen. Dann hast du mit der Performance keine Probleme.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 10:08
Zitat von jim_raynor:
Soll dieses Optionssystem Einstellungen für das Programm speichern? Wenn ja würde ich die Optionen am Programm start in Globale Variable oder ähnlichem lesen. Dann hast du mit der Performance keine Probleme.
Bingo. Hier geht es aber nicht darum, wo ich sie speichere (naemlich in einer globalen Variable, die beim Programmstart eingelesen wird), sondern wie ich sie speichere. Die Speicherung geschieht mit Hilfe der dpCollection, und wenn ich mir sicher sein kann, dass die Optionen in einer bestimmten Reihenfolge gespeichert werden, passt es ja. In der Mitte kommt sicher nichts mehr dazu, neue Optionen werden einfach am Ende drangehaengt. Falls die Speicherung aber zufaellig erfolgt, werde ich mir wohl was anderes einfallen lassen...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 10:27
Hallo alcaeus,
grundsätzlich kannst Du davon ausgehen das die Werte der Reihe nach gespeichert werden.
Wenn Du die Collection im Textformat speicherst kannst Du das sehen.

Aber ich verstehe Dein Problem nicht. Wenn jeder Wert ein Element der Collection ist dann
ist jeder Wert ein TCollectionItem Nachfahre. Warum bündelst Du nicht die einzelnen Werte
als properties eines einzigen TCollectionItem Nachfahren?
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 10:31
Zitat von Jens Schumann:
grundsätzlich kannst Du davon ausgehen das die Werte der Reihe nach gespeichert werden.
Wenn Du die Collection im Textformat speicherst kannst Du das sehen.
Jup, habs gesehn. Ich hab mich grad durch eine aeltere Connection durchgearbeitet. Super

Zitat von Jens Schumann:
Aber ich verstehe Dein Problem nicht. Wenn jeder Wert ein Element der Collection ist dann
ist jeder Wert ein TCollectionItem Nachfahre. Warum bündelst Du nicht die einzelnen Werte
als properties eines einzigen TCollectionItem Nachfahren?
Und ich verstehe dich nicht

Also die CollectionItems sind so TOptionsItem = class(TCollectionItem) deklariert und haben folgende Properties:
Delphi-Quellcode:
property OptionName: String read FOptionName write FOptionName;
property OptionValue: String read FOptionValue write FOptionValue;
property OptionType: TOptionTypes read FOptionType write FOptionType;
TOptionTypes ist deklariert als TOptionTypes = (otString, otBoolean, otInteger, otFloat); Alle Optionen werden als String gespeichert, und dann bei der Verwendung in den richtigen Type gecastet, allerdings bin ich mir im Moment nicht sicher, ob dies die optimale Methode ist. Vielleicht kann mir jemand ja einen Denkanstoss geben...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 10:44
Hallo alcaeus,
was ein bißchen Code doch ausmacht. Jetzt habe ich Dich verstanden.
Ich würde das mit dem Index vergessen und tatsächlich die Collection
durchlaufen bis ich die richtige Option gefunden habe. Wenn Du nicht
gerade 1000sende Optionen gespeichert hast dürfte man den Geschwindigkeitsnachteil
nicht merken. Das casten dauert bestimmt länger.

Dafür würde ich TJsCollection oder TmxJsCollection wie folgt erweitern.

Delphi-Quellcode:
...
  function GetOptionItem(aOptionname : String) : TOptionItem;
...
  property Option[aOptionname : String] TOptionsItem read GetOptionItem;
...

function TJsCollection.GetOptionItem(aOptionname : String) : TOptionsItem;
var
  iCnt : Integer;
  _Optionname : String;
begin
  Result:=Nil;
  _Optionname:=AnsiUpperCae(aOptionname);
  For iCnt:=0 to Count-1 do
    begin
       // evt muss hier noch nach TOptionsItem gecastet werden
    If AnsiUpperCase(Items[iCnt].Optionname)=_Optionname then
      begin
      Result:=Items[iCnt];
      Exit;
      end;
    end;
end;
Damit kannst Du die Option über den Optioname ansprechen
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 10:47
Ok, danke, das werde ich mal versuchen

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Kontrolliertes Speichern bei dpCollection?

  Alt 13. Apr 2005, 16:26
So, ich habs jetzt auch ohne den Tipp geschafft. Ich biete zwei Methoden an: einmal zum Zugreifen ueber den Namen, einmal ueber den Index. Die Funktion die ueber den Namen zugreift holt sich den Index der Option, und verwendet dann die zweite Methode. Funktioniert praechtig, und auch nicht so langsam.
Danke fuer die Hilfe

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 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