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/)
-   -   Delphi 2 Listen vergleichen (https://www.delphipraxis.net/134037-2-listen-vergleichen.html)

blooddog_90 14. Mai 2009 13:01


2 Listen vergleichen
 
Guten Tag Alle zusammen =)!


ich möchte zwei Listen vergleichen. Der Inhalt dieser sieht immer so aus:

213456
436745
3245
923476
12375
[...]

Die Inhalte der beiden Dateien unterscheiden sich stark. Aber ich will eben, dass Werte aus Datei 1 nicht in Datei 2 vorkommen. Aber die Werte die in Datei 1 existieren, jedoch aber nicht in Datei 2, sollen hinzugefügt werden zu Datei 2. :gruebel: - ja ^^

So würde meine fake-Prozedur aussehen:

Delphi-Quellcode:
var
dat1: TStringlist;
dat2: TStringlist;


procedure TForm1.FormCreate(Sender: TObject);
begin
  dat1:=Tstringlist.create;
  dat2:=Tstringlist.create;
  dat1.LoadFromFile('1.txt');
  dat2.loadfromfile('2.txt');
end;

// Werte löschen;
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:integer;
begin
  for i:=0 to dat2.count-1 do
    for j:=0 to dat1.count-1 do
      if dat2[i]=dat1[j] then
      //lösche dat2[i] in '2.txt';
 for k:=0 to dat1.count-1 do
  //dat[k] zu '2.txt' hinzufügen
end;
Wird das funktionieren? Und wie müsste der Code aussehen dort wo meine Kommentare jetzt sind? Bitte helft mir =)!

GHorn 14. Mai 2009 13:20

Re: 2 Listen vergleichen
 
Hi,

schon

Delphi-Quellcode:
dat2.Delete[i]
probiert?

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

hoika 14. Mai 2009 13:26

Re: 2 Listen vergleichen
 
Hallo,

Zitat:

Aber ich will eben, dass Werte aus Datei 1 nicht in Datei 2 vorkommen.
Aber die Werte die in Datei 1 existieren, jedoch aber nicht in Datei 2, sollen hinzugefügt werden zu Datei 2.
Habe ich da jetzt einen Knick im Gehirn,
oder schliesst sich das nicht aus ?

< Aber ich will eben, dass Werte aus Datei 1 nicht in Datei 2 vorkommen. >
Also aus 2 löschen, wenn in 1

Delphi-Quellcode:
for iDat2:= dat2.Count-1 downto 0
begin
  if dat1.IndexOf(dat2[iDat])<>-1 then dat2.Delete(iDat2);
end;

Heiko

blooddog_90 14. Mai 2009 13:27

Re: 2 Listen vergleichen
 
Nein. Aber das löscht ja auch nur in der Stringlist, richtig?
Ich wills ja in der Datei löschen. Und soweit ich weiß, ändert sich nichts innerhalb der Datei wenn ich was in der Stringlist lösche.
Aber trotzdem danke, für den Versuch ;)

:dp:

mkinzler 14. Mai 2009 13:28

Re: 2 Listen vergleichen
 
Du musst natürlich am Ende die Strigliste zurück in die Datei schreiben

blooddog_90 14. Mai 2009 13:30

Re: 2 Listen vergleichen
 
Ja schreiben mit writeln.Oder?

Aber wie sag ich Delphi, das er Zeile 417 in 1.txt löschen oder überschreiben soll?

Klaus01 14. Mai 2009 13:32

Re: 2 Listen vergleichen
 
Delphi-Quellcode:
dat2.savetoFile(FileName);

hoika 14. Mai 2009 13:40

Re: 2 Listen vergleichen
 
Hallo,

Zitat:

Aber wie sag ich Delphi, das er Zeile 417 in 1.txt löschen oder überschreiben soll?
Gar nicht, geht auch nicht in Delphi.

Du lädst beide Dateien in die StringLists,
bearbeitest diese StringLisst und dann halt wieder zurückspeichern.


Heiko

blooddog_90 14. Mai 2009 13:52

Re: 2 Listen vergleichen
 
Was passiert bei:
Delphi-Quellcode:
dat2.savetoFile(FileName);
Wird dann der Inhalt von dat2 zur Datei hinzugefügt oder wird damit die Datei überschrieben?

Klaus01 14. Mai 2009 13:53

Re: 2 Listen vergleichen
 
Zitat:

Zitat von blooddog_90
Was passiert bei:
Delphi-Quellcode:
dat2.savetoFile(FileName);
Wird dann der Inhalt von dat2 zur Datei hinzugefügt oder wird damit die Datei überschrieben?

das zweite wird passieren

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.
Seite 1 von 2  1 2      

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