Autor Beitrag
F.Art
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Do 09.01.03 01:21 
Wie macht man das eine Textdatei geladen wird und dann sortiert in drei Listboxen aufgeteilt wird.

Die Textdatei soll wie folgt aussehen.

Namen:
Mike
Dirk
Udo

Nachnahmen:
Müller
Schuster
Schmidt

Email Adresse:
1@xy.net
2@xy.net
3@xy.net


Und beim Laden sollen die jeweils richtig ein geordnet werden.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 09.01.03 08:14 
Hallo

du kannst entweder die Datei mit reset öffnen oder du nimmst eine extra Stringliste und lädst die Datei mit loadfromfile ein. anschließend gehst du die items einzeln durch und fügst sie zu jeweiligen listbox zu.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
  sl:=Tstringlist.create;
  sl.loadfromfile('blablabla')
  for i:=0 to sl.count-1 do
    begin
       if sl.items[i]='Namen:' then Mode:=0
        else if sl.items[i]='Nachnahmen:' then Mode:=1
         else if sl.items[i]='EMail Adresse:' then Mode:=2
          else
         begin
            case mode of
              0: Listbox1.items.add(sl.items[i]);
              1: Listbox2.items.add(sl.items[i]);
              2: Listbox3.items.add(sl.items[i]);
         end;              
    end;
  sl.free;

ungetestet aus dem Kalten, vielleicht noch n try-finally einbauen

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Do 09.01.03 13:42 
Es läuft so nicht ganz und bekomme es nich alleine gängig.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Do 09.01.03 13:53 
Hallo,

kannst Du mal so eine Text-Datei genauer beschreiben. Was spricht dagegen, die Infos in der Form

Name;Vorname;Mail
Mike;Müller;1@xy.net

zu speichern?
Warum 3 Listboxen? Geht das nicht in einer Listview?

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Do 09.01.03 15:06 
1. Die Liste sollte sortiert sein damit andere ganz einfach sie erweitern können.
2. Es sind schleifen drin die auf einzelne listboxen zugreifen und ich kann das nich in eine setzen.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 09.01.03 15:41 
F.Art hat folgendes geschrieben:
Es läuft so nicht ganz und bekomme es nich alleine gängig.

was läuft nicht?

F.Art hat folgendes geschrieben:

1. Die Liste sollte sortiert sein damit andere ganz einfach sie erweitern können.

hängen die daten nicht zusammen? , wenn du 3LB´s hast, verlierst du die Zuordnung

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.01.03 16:52 
Keldorn hat folgendes geschrieben:

hängen die daten nicht zusammen? , wenn du 3LB´s hast, verlierst du die Zuordnung

Nicht mit viel Aufwand und krampfhaften Code. Man kann sich viel Arbeit ersparen, wenn man für den richtigen Zweck, das richtige Steuerelement nimmt.
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Do 09.01.03 17:52 
Ich möchte die aufstellung der textdatei so haben damit andere ganz bequem was per texteditor hinzufügen können.ich möchte mir nicht die arbeit machen das ins prog einzubinden das man von dort aus speichern kann.ausserdem möchte ich auch selbst wissen wie man das mit meiner idee hin bekommt.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 09.01.03 18:13 
smiegel hat folgendes geschrieben:
Hallo,
Was spricht dagegen, die Infos in der Form

Name;Vorname;Mail
Mike;Müller;1@xy.net


Zitat:

Ich möchte die aufstellung der textdatei so haben damit andere ganz bequem was per texteditor hinzufügen können

daten in so einem Format kannst du äußerst bequem im Excel in übersichtlicher Tabllenform erstellen und(anschließend z.B. als Text-datei Tabsgetrennt) speichern
Was das Trennzeichen Tab oder Semikolon ist, ist dabei egal, kannst deinen Code flexeibel gestalten. Du ließt einen String ein, suchst ein trennezeichen (Pos) und kopierst die TeilStrings (copy) und füllst die Listboxen oder halt gleich ein Listview.

was läuft denn nu nicht?

Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Do 09.01.03 19:17 
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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i : word;
sl : Tstringlist;
begin
sl:=Tstringlist.create;
  sl.loadfromfile('test.txt');
  for i:=0 to sl.count-1 do
    begin 
       if sl.items[i]='Namen:' then Mode:=0 
        else if sl.items[i]='Nachnahmen:' then Mode:=1 
         else if sl.items[i]='EMail Adresse:' then Mode:=2 
          else 
         begin 
            case mode of 
              0: Listbox1.items.add(sl.items[i]); 
              1: Listbox2.items.add(sl.items[i]); 
              2: Listbox3.items.add(sl.items[i]); 
         end;              
    end; 
  sl.free; 

end;

end.

Der Fehler kommt
Zitat:
Undeclared identifier: 'items'
Undeclared identifier: 'Mode'


(10.01. 09:11 Tino) Code- & Quote-Tags hinzugefügt.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 10.01.03 08:33 
Hallo,

mode mußt du noch als word, integer deklarieren

das kommt davon, wenn man was direkt ins Forum schreibt
sl.strings[] :oops:

mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Fr 10.01.03 09:30 
Hallo,

folgend ein Beispiel, wie es gehen könnte, wenn Du das von mir vorgeschlagene Verfahren benutzt:
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:
type
  TAdressen:array[0..2] of String;

function Zerlege(aStr:String; aTrenner:Char):TAdressen;
var i:Integer;
begin
  i:=System.Pos(aTrenner, aStr);
  if (i>0) then
  begin
    Result[0]:=System.Copy(aStr, 1, i-1);
    Delete(s, 1, i);
  end;
  i:=System.Pos(aTrenner, aStr);
  if (i>0) then
  begin
    Result[1]:=System.Copy(aStr, 1, i-1);
    Delete(s, 1, i);
  end;
  Result[2]:=aStr;
end; // Zerlege

procedure TForm1.Button1Click(Sender: TObject); 
var i  :Integer; 
      sl :TStringList; 
      adr:TAdressen;
begin 
  sl:=TStringList.Create;
  try
    sl.loadfromfile('test.txt'); 
    for i:=0 to sl.count-1 do
    begin
      adr:=Zerlege(sl.Strings[i], ';');
      Listbox1.items.add(adr[0]); 
      Listbox2.items.add(adr[1]); 
      Listbox3.items.add(adr[2]); 
    end; // for i
  finally
    sl.Free;
  end; // try
end;

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Fr 10.01.03 13:16 
@ Smiegel
bei dir kommt da ein Fehler TAdressen:array[0..2] of String;

Und bei dem anderen Source kommt Undeclared identifier: 'items'
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 10.01.03 14:14 
nobody is perfect.

aber ein wenig mitdenken ist nicht zu viel verlangt?. Du kannst nicht verlangen, daß du hier im Forum eine 100% zu dir passende und funktionierende Lösung bekommst. Alle Problem ließen sich mit einem Blick auf die Fehlermeldung/Onlinehilfe lösen.

items:
ein Blick in die OH würde dir reichen, um zu erkennen, daß ich mich von Listbox hab leiten lassen und die strings nicht mit items wie in der Listbox sondern sl.strings[index] angesprochen werden. War halt direkt ins Forum geklimpert - mein Fehler

array Fehler:
der Compiler wird meckern und dir sagen
Zitat:

[Fehler] Unit2.pas(20): '=' erwartet, aber ':' gefunden

also statt : ein = mal probieren ?


Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Fr 10.01.03 16:37 
Hallo,

@Kehldorn: Danke für die Korrektur meines Tippfehlers.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Sa 11.01.03 13:22 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i : word;
Mode : word;
sl : Tstringlist;
begin
sl:=Tstringlist.create;
sl.loadfromfile('test.txt');
for i:=0 to sl.count-1 do
begin
if sl.strings[i]='Namen:' then Mode:=0
else if sl.strings[i]='Nachnahmen:' then Mode:=1
else if sl.strings[i]='EMail Adresse:' then Mode:=2
else
begin
case mode of
0: Listbox1.items.add(sl.strings[i]);
1: Listbox2.items.add(sl.strings[i]);
2: Listbox3.items.add(sl.strings[i]);
end;
end;
sl.free;

end;
end;
end.




Wenn ich dann die EXE starte und den Button klicke kommt
Acces violation at adress 00000000. Read of adress 0000000.
und die erste listbox wird nur Name: eingetragen.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 11.01.03 13:53 
Hallo F.Art!

Kann es sein das bei dir die Datei "test.txt" nicht existiert?

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Sa 11.01.03 14:11 
doch die ist da
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Sa 11.01.03 15:02 
Hallo,

es kann schon sein, dass die Datei da ist. Aber weiss Dein Programm, wo sich die Datei befindet?

Mit
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
if FileExists('test.txt') then 
begin
  sl.loadfromfile('test.txt');
  ...
  ...
end else ShowMessage('Datei nicht gefunden');

kannst Du feststellen, ob die Datei auch wirklich geladen wird.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 11.01.03 15:39 
Hallo F.Art!

Mir fällt gerade kein fehler mehr auf! Sinnvoll wäre es jedoch am Anfang Mode auf -1 zu setzen, damit leere Zeilen am Anfang ignoriert werden!

Zum Fehler: Am besten du setzt mal eine Haltepunkt an den Anfang dieser Prozedur und führst danach die einzelnen Befehle mit F8 einzeln aus!

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.