Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   löschen in txt (https://www.delphipraxis.net/84585-loeschen-txt.html)

SaFu 18. Jan 2007 21:35


löschen in txt
 
Hi

hab ma ne frage

Die Combobox holt sich bei mir die namen liste.txt und kann man jetzt beim auswählen in der ComboBox den eintrag auch wieder aus der txt löschen

Delphi-Quellcode:
procedure TForm7.Button2Click(Sender: TObject);
var i    :integer;
    leherl: Textfile;
   
begin
  AssignFile(leherl,'C:\Dokumente und Einstellungen\Lehrer Liste\'+'liste.txt');
   ReWrite(leherl);
    for i:= 0 to ComboBox3.Items.Count - 1 do
     begin
       WriteLn(leherl,ComboBox3.Items[i]);
     end;
   CloseFile(leherl);
end;
hoffe ich habe es plausiebel erklärt

Danke

mkinzler 19. Jan 2007 05:36

Re: löschen in txt
 
-Warum verwendest du nicht die Methode .SaveToFile() der StringList-Klasse?
-Du verwendest schon wieder feste Pfade.

yörsch 19. Jan 2007 07:54

Re: löschen in txt
 
Hai, :hi:

was willst du uns mit diese werbesendung sagen ? :gruebel: ich hab nix kapiert!

mkinzler 19. Jan 2007 08:24

Re: löschen in txt
 
Zitat:

Zitat von yörsch
Hai, :hi:

was willst du uns mit diese werbesendung sagen ? :gruebel: ich hab nix kapiert!

Die Eigenschaft .Items einer ComboBox ist vom Typ TStringList. Diese besitzt die Methode .SaveToFile() mit deren Hilfe man den Inhalt in eine datei Schreiben lassen kann.

Delphi-Quellcode:
ComboBox3.Items.SaveToFile('C:\Dokumente und Einstellungen\Lehrer Liste\'+'liste.txt');

SaFu 19. Jan 2007 15:05

Re: löschen in txt
 
Benutze immernoch die festen pfade da ich es immernoch nicht hin bekommen habe das ich die datei aus dem letzten ordner laden kann. es wird immer nur die datei geladen wenn sie im exe ordner meines Programm liegt.

das mit Savetofile() ist viel besser und kürzer danke.

Was ich mit dem anderen sagen wollte ich speicher doch mit meiner procedue den text(namen) vom edit3 in die combobox3 liste und diese liste wird in die liste.txt geschrieben (gespeichert) kann ich mir jetzt den namen der in der combobox3. liste (items) liegt selektieren und per rechter maustaste aus der textdatei (liste.txt) auslesen und wieder löschen sodas er nicht mehr in der liste der combobox3 auftaucht und in der listse.txt gelöscht ist.


Delphi-Quellcode:
procedure TForm7.Button2Click(Sender: TObject);
var Sl:TStringlist;
    i,x,y:integer;
    leherl: Textfile;
    d :String;
begin
 if Edit3.Text <> '' then
  begin
   Combobox3.Items.Add(Edit3.Text);// Text in die ComboBox3 List übergeben
   Sl:=TStringlist.Create;
   begin
    ComboBox3.Items.SaveToFile('C:\Dokumenteundeinstellungen\Desktop\Elinta\Lehrer Liste\'+'liste.txt'); // die exe liegt im elinta ordner
    end;
  Form8.ListBox1.Clear; // liste säubern
 begin
  AssignFile(leherl,'C:\Dokumente und Einstellungen\Elinta\Lehrer Liste\'+'liste.txt'); // wie funktioniert das eigenlich mit dem loadfromfile()
  Reset(leherl);
 while EOF(leherl) = False do
   begin
    Readln(leherl,d);
    Form8.ListBox1.Items.Add(d);
   end;
  Closefile(leherl);
 end;
 end
  else
   Application.MessageBox('Bitte Name des zu Vertrendenden Lehrer eingeben','Speicher Information',48);
end;


Danke

marabu 19. Jan 2007 15:58

Re: löschen in txt
 
Hallo Sascha,

die Lehrerliste würde ich in einer globalen Variable (LehrerListe: TStringList) mitführen. Diese Liste sollte sortiert sein (Sorted = True, Duplicates = dupIgnore). Dann kannst du diese Liste jederzeit in eine ListBox übernehmen oder nach Veränderungen auf externem Speicher sichern.

Delphi-Quellcode:
var
  LehrerListe: TStringList;
  fnLehrerListe: TFileName;
  sLehrer: String;
  iLehrer: Integer;

begin
  LehrerListe := TStringList.Create;
  LehrerListe.Sorted := True;
  LehrerListe.Duplicates := dupIgnore;

  fnLehrerListe := ExtractFilePath(ParamStr(0)) + 'LehrerListe.txt';
  LehrerListe.LoadFromFile(fnLehrerListe); // laden
  LehrerListe.SaveToFile(fnLehrerListe); // speichern
  ListBox.Items.Assign(LehrerListe); // übernehmen
 
  LehrerListe.Add(sLehrer); // Eintrag hinzufügen ohne Doppelung
  if LehrerListe.Find(sLehrer, iLehrer) then
    LehrerListe.Delete(iLehrer); // Eintrag entfernen
end;
Freundliche Grüße

SaFu 22. Jan 2007 21:14

Re: löschen in txt
 
Hallo erstmal :lol:

Danke für die Anwort habe mit deiner hilfe alle festen Pfade ändern können und mit dem Laden und speicher Funktioniert das auch so besser und ist vom text her viel kürzer

Leider habe ich das immer noch nich hinbekommen dass wenn ich mit der Rechten Maustaste den Namen aus der Combobox liste bzw. aus der datei in der die Namen gespeicher sind löschen Kann.

So speicher ich jetzt alles in der combobox und Listbox

Delphi-Quellcode:
Privat
Var plan :TFileName;
   leherl: TFileName;
   Vertrpl :TStringlist;

{StrinGrid Speichern}
procedure TForm7.Button2Click(Sender: TObject);
var x,y:integer;
begin
 if Edit3.Text <> '' then
  begin
   Vertrpl:= TStringlist.Create;
   Combobox3.Items.Add(Edit3.Text);// Text in die ComboBox3 Liste übergeben
   Vertrpl.Add(IntToStr(StringGrid1.Colcount));
   Vertrpl.Add(IntToStr(StringGrid1.Rowcount));
   for x:= 0 to StringGrid1.ColCount-1 do
   for y:= 0 to StringGrid1.RowCount-1 do
   Vertrpl.Add(StringGrid1.Cells[x,y]);
   for x:= 0 to StringGrid1.ColCount-1 do
   Vertrpl.Add(IntToStr(StringGrid1.ColWidths[x]));
   for x:= 0 to StringGrid1.RowCount-1 do
   Vertrpl.Add(IntToStr(StringGrid1.RowHeights[x]));
   Vertrpl.Add(IntToStr(StringGrid1.Clientwidth));
   Vertrpl.Add(IntToStr(StringGrid1.Clientheight));
   Vertrpl.Add(IntToStr(Ord(StringGrid1.ScrollBars)));
   plan:= ExtractFilePath(ParamStr(0))+'Vertretungspläne\'+ Edit3.Text +'.txt';
   Vertrpl.SaveToFile(plan);
   Showmessage('Datei wurde in:' + sLineBreak + plan + ' gespeichert');
    begin
     leherl:= ExtractFilePath(ParamStr(0)) +'\Lehrer Liste\'+'liste.txt';
     ComboBox3.Items.SaveToFile(leherl);
    end;
   Form8.ListBox1.Clear;
  begin
   leherl:= ExtractFilePath(ParamStr(0)) +'\Lehrer Liste\'+'liste.txt';
   Form8.ListBox1.Items.LoadFromFile(leherl);
  end;
 end
 else
  Application.MessageBox('Bitte Name des zu Vertrendenden Lehrer eingeben','Speicher Information',48);
end;
geht das löschen vielleicht nicht irgenwie so :gruebel:

Delphi-Quellcode:
if Shift = [ ssRight] then
 begin
   Application.MessageBox('Wollen sie Wirklich den eintrag löschen',Frage,36) = 6 then
  begin
    Combobox3.selection:= Delete; // nur ein vorschlag??????
  //+ den eintrag in der Textdatei löschen
.
.
.
.
end;
danke

mkinzler 23. Jan 2007 07:46

Re: löschen in txt
 
Delphi-Quellcode:
Combobox3.Items.Delete( ComboBox3.ItemIndex);

marabu 23. Jan 2007 08:11

Re: löschen in txt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sascha,

für das Löschen eines Eintrages aus einer ComboBox mittels rechter Maustaste schlage ich dir folgendes vor: Ordne der ComboBox ein PopupMenu zu und erzeuge darin ein MenuItem "Löschen". In meinem Beispiel-Code verwende ich Actions, die ich den MenuItems zuweise. Es ist nicht viel Code, also solltest du in der Lage sein ihn nachzuvollziehen.

Freundliche Grüße

SaFu 23. Jan 2007 08:20

Re: löschen in txt
 
Das heist wenn ich diesen eintrag gelöscht habe überschreibe ich damit einfach diese txt in der die namen gespeichert sind und habe somit die liste aktuallisiert :P :thumb:

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz