AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Beim Suchen gefundene Elemente aus Memo löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Beim Suchen gefundene Elemente aus Memo löschen

Ein Thema von Stamper · begonnen am 19. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#11

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 17:33
Anyway, versuch mal diese Funktion:
Delphi-Quellcode:
function FoundFileInDirectory(FileName, DirName: string): Boolean;
var Rec: TSearchRec;
begin
  Result := False;
  FileName := ExtractFileName(FileName);
  DirName := IncludeTrailingPathDelimiter(DirName);
  if FindFirst(DirName + '*.*', faAnyFile, Rec) = 0 then
    try
      repeat
        if (Rec.Attr and faDirectory) = faDirectory then
          begin
            if (Rec.Name <> '.') and (Rec.Name <> '..') then
              Result := FoundFileInDirectory(FileName, DirName + Rec.Name);
          end
        else
          Result := AnsiStrIComp(PChar(FileName),PChar(Rec.Name)) = 0;
      until (FindNext(Rec) <> 0) or Result;
    finally
      FindClose(Rec);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Stamper

Registriert seit: 19. Jan 2008
18 Beiträge
 
#12

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 18:02
Ich hab das Problem jetzt anders gelöst:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var mzwvar, mzwvar2 : string;
    lcount, lcount2, highcount, highcount2 : byte;
begin
  gcount := 0;
  Progressbar1.Max:= Memo1.Lines.Count;
  highcount := memo1.Lines.Count;
  For lcount := 0 to highcount-1 do
  begin
    gconst := lcount;
    mzwvar := memo1.Lines[lcount];
    GetFilesInDirectory(shelltreeview1.SelectedFolder.PathName, mzwvar, Listbox1.Items, True, True);
    Progressbar1.Position:= lcount + 1;
    label1.Caption := format('Es wurde(n) %d Datei(en) gefunden.',[gcount]);
  end;
  highcount := listbox1.Items.Count;
  For lcount := 0 to highcount2-1 do
  begin
    mzwvar := ExtractFileName(listbox1.Items[lcount]);
    For lcount2 := 0 to highcount-1 do
    begin
      mzwvar2 := memo1.Lines[lcount2];
      if mzwvar = mzwvar2 then memo1.Lines.Delete(lcount2);
    end;
  end;
end;
Ich weiß, jeder halbwegs belesene Programmierer würde sich bei meinem Quelltext sicher erschießen.^^ Es ist nämlich verdammt umständlich. Und zwar extrahiere ich aus dem gefundenen Element, welches die Pfad- und Dateiangabe enthält, den Dateinamen und suche den im Memo. Wenn die Strings übereinstimmen, wird gelöscht.

Aber eins versteh ich nicht. Ich bekomme jetzt immer die Meldung: "Listenindex überschreitet das Maximum(Zahlenangabe)."
Weißt du was damit anzufangen?

Schöne Grüße
Eric
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 18:13
ganz spontan: du modifizierst mitten in der schleife den linecount wert durch das löschen von zeilen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#14

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 18:15
Jepp, wenn Du Zeilen löschen willst, muss die Zählvariable rückwärts laufen.
Delphi-Quellcode:
For lcount2 := highcount-1 downto 0 do //andersherum
    begin
      mzwvar2 := memo1.Lines[lcount2];
      if mzwvar = mzwvar2 then memo1.Lines.Delete(lcount2);
    end;
[edit] Erklärung: Die "Laufvariable" wird einmalig gesetzt.for i := 0 to highcount - 1 do Angenommen, es gibt 10 Einträge: Startwert ist 0, Endwert ist 9. Wenn Du zwischendurch Einträge löschst, wird der Endwert nicht aktualisiert, d.h. die Schleife läuft trotzdem weiter. Es genügt also, einen einzigen Eintrag zu löschen, dann kracht es am Schleifenende.[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Stamper

Registriert seit: 19. Jan 2008
18 Beiträge
 
#15

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 19:29
Die Lösung mit dem "downto" bringt leider auch nichts. Aber ich habe noch ein ganz anderes Problem mit meiner Lösung. Und zwar wird immer nur das erste Element in der Memo gelöscht, was auch in der Listbox eingetragen ist. Die anderen Einträge der Memo, die in der Listbox stehen, werden nicht aus dem Memo gelöscht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#16

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 19:35
Kannst Du mal einen Screenshot Deines bisherigen Programms posten? Am Besten mit einer kurzen Erklärung, was wo hinein geladen wird und was wann passieren soll? Ich habe nämlich zugegebenermaßen etwas den Überblick verloren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Stamper

Registriert seit: 19. Jan 2008
18 Beiträge
 
#17

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 19:46
Das Problem mit der Fehlermeldung hat sich gegeben. Ich hab dem Programm ja gar nicht gesagt, was der Wert für "highcount2" ist.
Habs damit gelöst:
highcount2 := memo1.Lines.Count;
Miniaturansicht angehängter Grafiken
screenshot_dateisuche_117.jpg  
  Mit Zitat antworten Zitat
Stamper

Registriert seit: 19. Jan 2008
18 Beiträge
 
#18

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 19:50
Falls du dir mal alles anschauen willst: Hier sind alle nötigen Dateien:
Dateisuche
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#19

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 19. Jan 2008, 20:21
Mal sehen, ob ich das geschnallt habe: in das Memo wird Deine "Wunschliste" eingetragen, in die ListBox rechts unten die gefundenen Dateien aus einem bestimmten Verzeichnis. Anschließend soll die Wunschliste gefiltert werden, richtig?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Stamper

Registriert seit: 19. Jan 2008
18 Beiträge
 
#20

Re: Beim Suchen gefundene Elemente aus Memo löschen

  Alt 20. Jan 2008, 12:21
Ja, das siehst du richtig. Es sollen am Schlss in der "Wunschliste" bloß noch die Dateinamen der Dateien stehen, die nicht gefunden wurden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr.
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