Autor Beitrag
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 24.09.02 17:11 
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:
ausblenden 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):
ausblenden 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

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mi 25.09.02 09:21 
kannst du nochmal ein bisserl mehr code posten, wo die zuweisung in die stringlisten ausführst.

Gruß
Ken
tommie-lie Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: 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:
ausblenden volle Höhe 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.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert