Delphi

05/17/2014 00:20 #USB'#1
Hallo,

ich versuche zurzeit ein VCL-Anwendung zu programmieren in der man einzelne Texte speichern kann. Diese Texte sollen durch mehrere Überbegriffe geordnet werde.
z.B.: Geschichte:-Mittelalter
-Steinzeit
-Weltkrieg
Erdkunde:-Russland
-Europa
-USA

Diese Texte sollen im Programm eingegeben werden und dann dort gespeichert werden.

Kann mir da wer helfen wie ich das am besten amche?

mfg

PS:Bin ein blutiger Anfänger.
05/17/2014 03:40 マルコ#2
Als erstes solltest du eine passende Speicherform für die Programmlaufzeit festlegen. Z.B.

Code:
type
  TNode = record
    key,
    value
    : string;
  end;
Dann wäre es sinnvoll, wenn du alle keys in einem array speicherst, so dass du damit schneller arbeiten kannst. Das ganze würde ich persönlich in eine Klasse packen, die z.B. so aussehen könnte:

Code:
type
  TStringArray = array of string;

  TextList = class
  private:
    list
    : array of TNode;

    keyList
    : array of string;

  public:
    constructor Create;

    function getKeys : TStringArray; // get all available keys (e.g. to fill a TListView)
    function getValues(const key : string) : TStringArray; // get all texts with a given key (e.g. to fill a TListView)
    procedure addNode(node : TNode);
    procedure loadFromFile(const file : string);
    procedure saveToFile(const file : string);
  end;
Die Methoden Namen sollten relativ selbstsagend sein. Bei den Arrays handelt es sich um dynamische Arrays, die mit Länge 0 initialisiert werden müssen. Danach einfach immer beim hinzufügen um 1 vergrößern und dem letzten Array Feld den neuen Wert zuweisen.
Das Speichern/Laden nimmst du im einfachsten Fall mit INI File - kann alles was du brauchst und ist auch menschenlesbar. Das braucht kaum erklärung. Einfach googeln. Alles andere wäre für einen Anfänger vllt etwas overkill.

Das ganze kannst du dann ausbauen mit Tests auf doppelte Einträge, oder eine ID in die Nodes einfügen, so dass geziehlt doppelte Einträge möglich sind.
Hinzufügen kann man dann noch Methoden zum Ändern des Textes oder des Keys einer Node. Und das Löschen von Nodes ist sicherlich auch noch mal interessant. Kann man einiges lernen, mit dieser Anwendung.

So, jezz überlass ich dir den Hauptteil der Arbeit: Das Ausprogrammieren :)
05/17/2014 19:31 #USB'#3
Habe ne weitere Frage, wenn ich ein Item aus einer ListBox löschen möchte, wie kann ich dann das Item beschreiben bzw. bennen?

mfg
05/19/2014 20:54 マルコ#4
Per Index kannst du die Items löschen. Du kannst ein onclick event für die ListBox machen, per Index das Element finden, die Caption lesen, in deiner Liste suchen, löschen und dann auch das Element aus der Listbox entfernen.