Entwickler-Ecke

Dateizugriff - ListBox & Dateien


patrick dee - Do 02.01.03 11:53
Titel: ListBox & Dateien
hallo reader,

Problem:

habe eine ListBox mit div einträgen. Wenn ich nun auf einen klicke soll eine Datei erzeugt werden die IMMER Naps.cc1 heissen soll. in dieser soll dann immer der eintrag aus der listbox stehen. hast du ein beispiel für mich wie so etwas geht ?????

danke
patrick


Jack Falworth - Do 02.01.03 12:53


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure Speichern;
var datei: Textfile;
begin
assignfile (datei, NapsCC1);
 try
   rewrite (datei); 
   writeln (datei, Listbox1.ItemIndex);
 finally
  closefile (datei);
 end;
end;


Ich habs nicht geprüft, sollte aber funktionieren. Das ist eine einfache Variante mit einer Textfile.

MfG

Jack Falworth


Delete - Do 02.01.03 15:54

Jack Falworth hat folgendes geschrieben:
Ich habs nicht geprüft, sollte aber funktionieren.

Quelltext
1:
2:
...
   writeln (datei, Listbox1.ItemIndex);

Kleine Korrektur: mit der Zeile speicherst du die Index-Nr. des ausgewählten Eintrags in der Datei, aber nicht den String, der dadurch repräsentiert wird. Richtig wäre IMHO

Quelltext
1:
   writeln (datei, Listbox1.Items[Listbox1.ItemIndex]);                    

Außerdem würde ich vor dem Speichern prüfen, ob überhaupt ein Eintrag gewählt wurde. Wenn nicht, ist der ItemIndex -1!


S - tefano - Do 02.01.03 16:04

Hi,

Wenn er die Speichern-Prozedur innerhalb des OnClickEvents aufruft, muss er das nicht machen. Dann hat er nämlich auf jeden Fall einen "gültigen" ItemIndex (der Event wird ja nur ausgelöst, wenn man auf ein Item klickt).

Bis denn,

S - tefano


Jack Falworth - Do 02.01.03 17:32

Mein Fehler, war in Eile. :roll:

MfG

Jack Falworth


Delete - Do 02.01.03 18:17

S - tefano hat folgendes geschrieben:
Wenn er die Speichern-Prozedur innerhalb des OnClickEvents aufruft, muss er das nicht machen. Dann hat er nämlich auf jeden Fall einen "gültigen" ItemIndex (der Event wird ja nur ausgelöst, wenn man auf ein Item klickt).

Richtig! Aber ich hab´s mir mittlerweile angewöhnt, auf Nummer Sicher zu gehen und lieber eine Prüfung zuviel einzubauen. :) Aber recht hast du trotzdem!

Jack Falworth hat folgendes geschrieben:
Mein Fehler, war in Eile.

Null Problemo. Passiert schon mal ...


S - tefano - Do 02.01.03 18:53

Am besten gratulieren wir uns einfach zu unserer "Tolligkeit" und das wars dann. 8)


patrick dee - Fr 03.01.03 17:14

hi leute

danke für die vielen antworten. aber wie muß ich das ganze bei mir einbauen ??? in der listbox1 dblclick ???

den ich muß ja noch sagen wohin er die datei legen soll. dies will ich mit edit2.text machen. also wie geht das mit dblclick das in den order zu legen desen pfad ich in edit 2 habe
arbeite mit delphi 6

danke

gruß

patti


Jack Falworth - Fr 03.01.03 19:15

jep baust das in das Doppelclick Ereignis der Listbox ein.
Für den Dateinamen musst du nur die Procedure etwas erweitern.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure Speichern; 
var datei: Textfile; 
begin 
datei:= Edit2.Text;
 try
  assignfile (datei, NapsCC1); 
  try 
    rewrite (datei); 
    writeln (datei, Listbox1.Items[Listbox1.ItemIndex]); 
  finally 
   closefile (datei); 
  end; 
 except 
  Showmessage ('Ungueltiger Dateiname!');
 end;
end;


Müsste eigentlich funktionieren,

MfG

Jack Falworth


patrick dee - Sa 04.01.03 14:10

hi,

ok habe es so gemacht bekomme aber noch die Fehler:
Zitat:
undefinierter bezeichner NapsCC1.
'.' erwartet aber ';' gefunden.
Ungenügend Forward oder External deklaration TForm1.Speichern.

so habe ich es

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:
public
    { Public-Deklarationen }
    procedure Speichern;

 

procedure TForm1.ListBox1DblClick(Sender: TObject);
var datei: Textfile; 
begin
datei:= Edit2.Text;
try 
  assignfile (datei, rc1);
  try 
    rewrite (datei); 
    writeln (datei, Listbox1.Items[Listbox1.ItemIndex]); 
  finally 
   closefile (datei); 
  end; 
except 
  Showmessage ('Ungueltiger Dateiname!'); 
end; 
end; 

end;

gruß

patti

(04.01. 23:25 Tino) Code-Tag hinzugefügt.


Jack Falworth - Sa 04.01.03 15:02

ups sorry mein fehler, kann ja so nicht klappen.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure Speichern; 
var datei: Textfile; dateiname: string;
begin 
dateiname:= Edit2.Text; 
try 
  assignfile (datei, dateiname); 
  try 
    rewrite (datei); 
    writeln (datei, Listbox1.Items[Listbox1.ItemIndex]); 
  finally 
   closefile (datei); 
  end; 
except 
  Showmessage ('Ungueltiger Dateiname!'); 
end; 
end;


jetzt nur noch in das Edit Naps.cc1 oder sonstwas eintragen, dann sollte es klappen.


patrick dee - Sa 04.01.03 15:34

hi

programm startet aber nix passiert wollte eigendlich in edit 2 den pfad eingeben wo das ganze abgelegt wird zb F:\Eintrag\
wenn ich jetzt klicke passiert nix auch mit der suchfunktion finde ich im computer nix

gruß

patti


Jack Falworth - Sa 04.01.03 17:29

Ich hab das bei mir jetzt ausprobiert und es funktioniert!!


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure Speichern;
var datei: Textfile; dateiname: string;
begin
dateiname:= Form1.Edit1.Text;
try
  assignfile (datei, dateiname);
  try
    rewrite (datei);
    writeln (datei, Form1.Listbox1.Items[Form1.Listbox1.ItemIndex]);
  finally
   closefile (datei);
  end;
except
  Showmessage ('Ungueltiger Dateiname!');
end;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
Speichern;
end;


und als Pfad nimmst du z.b. " ./hallo.cc1 " dann wird die Datei in das aktuelle Verzeichnis gespeichert. Du kannst aber auch jedes x-beliebige Verzeichist benutzen.
Wenn du nur das Verzeichnis reinschreiben willst, dann musst du halt noch eine Procedure schreiben, die an den pfad den dateinamen anhängt.

MfG

Jack Falworth


patrick dee - So 05.01.03 07:14

danke jack

jetzt geht es auch bei mir

gruß
patti :lol: