AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringlisten vergleichen

Ein Thema von creehawk · begonnen am 6. Jun 2022 · letzter Beitrag vom 6. Jun 2022
Antwort Antwort
Seite 1 von 2  1 2      
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
241 Beiträge
 
Delphi 10.4 Sydney
 
#1

Stringlisten vergleichen

  Alt 6. Jun 2022, 14:04
Moin Moin.

Ich möchte muss 2 Listen vergleichen um herauszufinden was in der einen Liste fehlt

Delphi-Quellcode:
var
I,II:Integer;
Str : String;
CurrentList : TStringlist;
DDSList : TStringList;
CopyList : TstringList;
begin
  Currentlist := TStringlist.Create;
  DDSList := TStringlist.Create;
  CopyList := TStringlist.Create;
  CurrentList.LoadFromFile(TMPPath + 'CurrentDivFiles.txt'); // 3049 Zeilen ex. G:\Files\dds\....Dateiname
  DDSList.LoadFromFile(TMPPath + 'DDSList.txt'); // 3293 Zeilen ex. icon_crops_diversity_2_dark_0.dds
  for i := 0 to CurrentList.Count -1 do
   begin
    STR := CurrentList.Strings[I];
    for II := 0 to DDSList.count -1 do
      begin
       if AnsiPos(STR,DDSList.Strings[II]) = 0 then CopyList.add(DDSList.Strings[II]);
      end;
   end;
   CopyList.SavetoFile(TMPPath + 'CopyList.txt');
end;
Alles läuft bis zu dem Moment wo ich CopyList speichern will : Zuwenig Arbeitsspeicher. Was??

Kann mir jemand auf die Sprünge helfen?

creehawk

Geändert von creehawk ( 6. Jun 2022 um 14:11 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#2

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:26
Ich hätte das vielleicht anders umgesetzt.
Nimm die Funktion IndexOf, dann siehst du, ob der String schon in der Liste drin ist.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:28
Und wo werden die StringListen wieder freigegeben?
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
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
241 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:35
IndexOf ......

Wie macht man das richtig?


Freigegeben? Wenn ich die beiden - Current und DDS - VOR dem speichern der CopyList freigebe (Free) ändert das nicht am OutofMemory....

creehawk

Ausserdem : die beiden Dateien sind zusammen 400 KB groß.... OutOfMemory?
  Mit Zitat antworten Zitat
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
241 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:40
Ich habe jetzt mal anstell des schreibens in die CopyList das ausgeben lassen in ein Memofeld auf der Form.

Das läuft und läuft - ein Eintrag nach dem anderen...

Eigentlich sollte doch die Zeile AnsiPos nur dann in die Memo/Stringlist schreiben wenn er den Eintrag nicht findet.

Irgendwas ist im Konstrukt faul. Aber was zum Teufel?

creehawk
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#6

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:41
Du lädst einfach die Liste und prüfst, ob ein String dort schon enthalten ist oder nicht.

Delphi-Quellcode:
SL.Loadfromfile('deineliste.txt');

If SL.IndexOf('deineSuche') = -1 then begin
  //dann mache was mit 'deineSuche'
end;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 6. Jun 2022 um 14:47 Uhr) Grund: Danke DeddyH
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:42
Verstehe ich das richtig: Du willst die Zeilen der einen Datei ermitteln, die in der anderen nicht vorkommen?

[edit] @zeras: IndexOf gibt einen Integer zurück, keinen Boolean [/edit]

[edit2] Falls ich das richtig verstanden habe, könnte man das ja auch ohne 3. Liste umsetzen (ungetestet):
Delphi-Quellcode:
var
  Gross: TStringList;
  Klein: TStringList;
  i: integer;
begin
  Klein := nil;
  Gross := TStringList.Create;
  try
    Klein := TStringList.Create;
    Klein.LoadFromFile(...);
    Gross.LoadFromFile(...);
    for i := Gross.Count - 1 downto 0 do
      if Klein.IndexOf(Gross[i]) >= 0 then
        Gross.Delete(i);
    Gross.SaveToFile(...);
  finally
    Klein.Free;
    Gross.Free;
  end;
end;
[/edit2]
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

Geändert von DeddyH ( 6. Jun 2022 um 14:52 Uhr)
  Mit Zitat antworten Zitat
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
241 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 14:59
Tja, jetzt ist die CopaList so gross wie die Currentlist....

Hatte ich nicht irgendwo gelesen das IndexOf nur ein ganzen Stringvergleich macht? In der Currentlist stehen aber nur die Dateinamen, in der DDSList die Dateinamen MIT den Pfaden....

creehawk
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#9

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 15:02

Hatte ich nicht irgendwo gelesen das IndexOf nur ein ganzen Stringvergleich macht? In der Currentlist stehen aber nur die Dateinamen, in der DDSList die Dateinamen MIT den Pfaden....

creehawk
Ja, das musst du aber mit dazuschreiben. Das haben wir leider nicht aus den Informationen herauslesen können.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
241 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Stringlisten vergleichen

  Alt 6. Jun 2022, 15:10
Okay, tut mir leid, war vielleicht nicht deutlich genug, aber in der ersten Post stehten zwei Beispiele drin im Delhi Code.

Es sollte aber funktionieren wenn ich die Listen angleiche. Das mache ich mal.

Trotzdem: Warum OutOfMemory?

creehawk
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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