tommie-lie - Di 24.09.02 17:11
Titel: Problem mit StringList
Hallo,
Ich habe folgendes Problem:
Ich habe zwei Stringlists erstellt (während der Laufzeit). Ich habe gleichzeitig in einer Datenbank (MyLittleBase2) in den Felder "RelImages" und "RelTexts" zwei Strings, die durch Kommata getrennte Zahlen enthalten (1,2,3,4). Diese möchte ich über's CommaText-Property den StringLists zuweisen. Später werden dann die Lists ausgelesen und aus anderen Datenbanken die entsprechenden Zeilen angesprungen (natürlich mit StrToInt).
Der Code zum Zuweisen sieht so aus:
Quelltext
1: 2:
| Images2Add.CommaText := TextDatenbank.GetData('RelImages'); Texts2Add.CommaText := TextDatenbank.GetData('RelTexts'); |
Wenn ich das Programm dann ausüfhre, enthalten die Listen keine Strings. Durch Debugging habe ich rausgefunden, daß der Fehler in diesen Zeilen liegt, also direkt da, wo ich den Text zuweise. Dannach enthält nämlich die Stringliste 0 Einträge.
Die Datenbankdatei sieht so aus (cvs-Format):
Quelltext
1: 2: 3: 4: 5: 6:
| Text; RelImages; RelTexts F:\\meintext.txt; 1,2,4; F:\\nocheiner.txt; 6,5,2; F:\\schonwieder.txt; 3,6,4,5; F:\\dervierte.txt; 2,1,5; F:\\nr5lebt.txt; 3; |
Also sind überall mindestens 3 Einträge (außer beim letzten).
Weiß einer warum die Stringlist die Strings aus den Felder nicht annehmen will? Fehlermeldungen bezüglich den StringLists erhalte ich beim Kompilieren keine. Nur ein Hint, daß eine Variable deklariert aber nicht benutzt wird.
Ansonsten geht übrigens alles. Er liest also das erste Feld der Datenbank ohne weiteres aus. Zwar nicht in eine Liste sondern in einen "normalen" String, aber die Datenbank funktioniert an sich.
Tschüß
Thomas
tommie-lie - Mi 25.09.02 15:32
Hallo Ireniceus,
Der Code den ich gepostet habe ist eigentlich die Zuweisung in die Stringlisten. Aber hier ist nochmal eine gekürzte Version der ganzen Unit:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| unit dbinterface;
interface
uses Classes, StrUtils, SysUtils, ComCtrls;
procedure UpdateTextTree; procedure ClearTree;
implementation
uses MainUnit;
procedure UpdateTextTree; var i, j, ref_i: Integer; ItemText: String; CurrentNode: TTreeNode; Images2Add, Texts2Add: TStringList;
begin // At first, resets the tree to an empty list to prevent double // entries or lost links in the tree ClearTree;
// Creating the stringlists at the beginning Images2Add := TStringList.Create; Texts2Add := TStringList.Create;
// then interact only with the form that owns the tree with MainForm do begin
//Adds the major node(s) containing the filename of the text TextDatenbank.GoFirst; i := TextDatenbank.GetCurrentRow; while (i <= TextDatenbank.RowCount) do begin TextDatenbank.Go(i); ItemText := ExtractFileName(TextDatenbank.GetData('Text')); ItemText := LeftStr(ItemText, Pos('.', ItemText) - 1); CurrentNode := TextTree.Items.AddNode(nil, nil, ItemText, nil, naAdd);
// Setting the image to the text-icon, 'cause they are all texts CurrentNode.ImageIndex := 2; CurrentNode.SelectedIndex := 2;
// Then adding the subnodes containing all the references for // the specific text // At first, setting the references to the stringlists... Images2Add.CommaText := TextDatenbank.GetData('RelImages'); Texts2Add.CommaText := TextDatenbank.GetData('RelTexts'); [b]in den letzten beiden Zeilen hakt's[/b]
// ...then adding the images from the stringlist ref_i := Images2Add.Count - 1;
while ref_i >= 0 do begin ImageDatenbank.Go(StrToInt(Images2Add.Strings[ref_i])); TextTree.Items.AddChild(CurrentNode, ImageDatenbank.GetData('Image')); TextTree.Items.AddChild(CurrentNode, 'mist'); CurrentNode.Item[j - 1].ImageIndex := 3; CurrentNode.Item[j - 1].SelectedIndex := 3; CurrentNode.Collapse(True);
ref_i := ref_i - 1; end;
i := i + 1; end; end; end; |
Wie gesagt, ist gekürzt. Die Unit esteht nicht nur aus der einen Prozedur. Mag sein, daß zusätzliche syntaktische Fehler drin sind, die will ich aber nicht behoben wissen. Ich will, daß meine beiden Stringlisten funktionieren, den Rest krieg' ich dann schon selber hin.