![]() |
werte in array ablegen und aufrufen
Hallöchen,
um nicht 20 Spalten in einer Tabellen anlegen zu müssen habe ich in eine Zelle 20 Parameter (alles Integer) als Text in eine Spalte mit Kommas getrennt gelegt. Der Text in etwa so aus: 0,1,2,0,2,1... Nun möchte ich den Inhalt wieder auseinander nehmen und die Parameter verwenden. Wie sähe der richtige Weg dazu aus? Muss man alles in eine Stringliste legen oder gibt es andere Möglichkeiten? Grüße Privateer3000 |
Re: werte in array ablegen und aufrufen
Was meinst Du mit Tabelle? Datenbank? Dann ist das genau das falsche Vorgehen, da die DB so nicht normalisiert ist.
|
Re: werte in array ablegen und aufrufen
Sind die vorhandenen "Parameter" alles einstellige Zahlen? Wie möchtest du die Ergebnisse vorliegen haben?
Es gibt units und Funktionen, die dieses Problem behandeln, such mal nach explode Aber eigentlich könntest du für dein Problem relativ schnell eine eigene Funktion basteln, aber dafür müsste man schon die obigen Fragen beantworten =) Edit: Er meint glaube ich eine CSV!? |
Re: werte in array ablegen und aufrufen
Ja, in einer datenbank habe ich alle möglichen programmeinstellungen gespeichert.
Jetzt wollte ich mit Parametern bestimmte Zustände schalten. Dies geschieht mit mit 0,1 oder 3. 20 Zustände sollen geschrieben werden. Um, wie gesagt, nicht 20 Spalten benutzen zu müssen wollte ich alle in einen String packen und dann,wie richtig erkannt, wieder auseinander zu nehmen. So dass ich dann ähnlich einer Stringlist mit n1[i]..n20[i] eine integere Variable damit belegen kann. Ich hab keine richtige Idee das umzusetzen. |
Re: werte in array ablegen und aufrufen
Wenn ich das richtig verstehe, handelt es sich doch um eine m:n-Beziehung. Diese wird im Normalfall über eine Zuordnungstabelle realisiert, dafür brauchst Du keine 20 Spalten in der Haupttabelle.
|
Re: werte in array ablegen und aufrufen
Also wenn ich das alles richtig verstanden habe, dann ist die TStringList ganz gut für dich geeignet. Du weist deinen kommaseparierten String einfach der Eigenschaft StringList.DelimitedText zu und kannst dann ganz einfach über den Listenindex auf die einzelnen Inhalte zugreifen.
Alternativ gäbe es noch die Möglichkeit Schlüssel-Wertepaare ala INI-Datei zu verwenden. Das heisst du legts in deiner StringList die Parameter in folgender Form ab (geht z.B. über die Eigenschaft Value):
Delphi-Quellcode:
Para1=34
StringList.Value('Para1') := IntToStr(34);
Para2=22 ... Auslesen kannst du auch hier wieder DelimitedText: Para1=34,Para2=22... Mit den Eigenschaften Value und Name kannst du in der StringList direkt über Schlüsselname auf den Wert zu greifen. Das hat den Vorteil, dass du nicht immer alle Parameter speichern musst, sondern nur die, die du im jeweiligen Fall auch benötigts UND du könntest durch neue Schlüsselnamen ganz einfach erweitern. Edit: Wobei DeddyH natürlich recht damit hat, dass man dies in einer DB nicht unbedingt so machen sollte... Ich könnte mir das allerdings trotzdem durchaus vorstellen, um z.B. Einstellungen für einen Benutzer in einem Parameterstring zu sichern, o.ä. |
Re: werte in array ablegen und aufrufen
Danke Leute
ja es geht um Benutzereinstellungen zu sichern. Kann ich nicht ein fach den string den ich aus der DB auslese in eine stringlist umwandeln? Normalerweise werden ja elemente einzeln einer stringlist hinzugefügt. Nun steht der string ja schon "fertig" da.
Delphi-Quellcode:
kann man das nun einfach umwandeln?
var settings:String;
... settings:=fieldbyname('einstell').asString; |
Re: werte in array ablegen und aufrufen
Zitat:
Schau dazu auch in der Hilfe zur TStringList nach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz