Autor Beitrag
JacFab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111



BeitragVerfasst: Di 06.05.03 12:37 
Wie kann ich den Pfad einer datei , die in meine liste eingefügt ist speichern, ohne dies für den user sichtbar zu machen?
kann man den pfad irgentwie in items[index].data reinschreiben?
wenn wie?
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 06.05.03 12:58 
nimm eine andere tstringlist, in der du den pfad schreibst. in etwas so:
(liste ist die Listbox)
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var pfadlist: TStringList;

OnCreate: pfadlist:=TStringList.create;

procedure AddHinzu(name,pfad: string);
begin
  liste.add(name);
  pfadlist.add(pfad);
end;

procedure GebePfad(Index: Integer);
begin
  showmessage(pfadlist[index]);
end;

procedure DelEtr(Index: integer);
begin  
  liste.delete(index);
  pfadlist.delete(index);
end;
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 06.05.03 14:23 
Hi,

du kannst auch wie du schon vermutet hast die Data Eigenschaft benutzen. Allerdings ist das nicht ganz so einfach.

Zu erst würde ich ein Record definieren:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
Type
  pPathItem = ^tPathItem;
  tPathItem = Record
    Name: String;
    Path: String;
  End;

Wenn Du nun ein Item der Liste hinzufügen willst machst Du das dann über die Funktion AddObject:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Var
  NewPathItem: pPathItem;
Begin
  New (NewPathItem);

  With NewPathItem^ Do
    Begin
      Name := 'Name';
      Path := 'Path';
    End;

  Liste.AddObject ('String', NewPathItem);
End;

Zugriff auf das Rekort bekommst du zu Beispiel so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
Var
  PathItem: tPathItem;
Begin
  PathItem := pPahtItem (Liste.Object [0])^;
  Edit1.Caption := PathItem.Name;
  Edit2.Caption := PathItem.Path;
End;

Nicht vergessen wenn Du die Items nicht mehr benötigst den durch New erzeugten Speicher wieder freizugeben (Dispose).

Gruß
Tino

PS: Der Code ist nicht getestet!
JacFab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 111



BeitragVerfasst: Di 06.05.03 14:46 
kann man auch bei items, die man mit listbox.item.add erstellt hat, in data etwas reinschreiben?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 06.05.03 14:49 
Wieso probierst Du es nicht einfach aus? Oder schau doch mal in die Hilfe. Dann siehst Du das die Eigenschaft Items vom Type tStrings ist.

Und da die Eigenschaft Objects und die Methode AddObject in der Klasse tStrings definiert sind ist die Antwort: Ja! :-)

Gruß
Tino
ase
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 203

Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
BeitragVerfasst: Mi 07.05.03 20:50 
servus

wenn es dir mehr hilft, dann kannst du bei AddObject auch ein objekt als zweiten parameter übergeben. jedoch auch objekte müssen mit der methode Free zerstört werden, nicht vergessen.


ase
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 08.05.03 09:11 
ase hat folgendes geschrieben:
wenn es dir mehr hilft, dann kannst du bei AddObject auch ein objekt als zweiten parameter übergeben. jedoch auch objekte müssen mit der methode Free zerstört werden, nicht vergessen.

Hab ich doch schon geschrieben. Oder habe ich irgendetwas vergessen?

Gruß
Tino
ase
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 203

Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
BeitragVerfasst: Do 08.05.03 09:19 
du hast es mit nem record und dann new() und dispose() gemacht. ich habs mit nem objekt gemacht. geht auch. wollte nur einen ergänzenden beitrag zum thema leisten :P