![]() |
2 Arrays vergleichen...
Hi,
ich habe hier 2 Arrays und möchte diese gerne vergleichen, soweit auch kein Problem !
Delphi-Quellcode:
Nun möchte ich gerne wissen, wie ich herausfinde, wenn ein Wert im 1. Array drinsteht, aber im 2. Array nicht ! Dazu muss ich aber wissen, in welchem es NICHT drinsteht.
for lauf1 := 1 to j do begin
for lauf2 := 1 to i do begin if sku[lauf1] = Tempsku[lauf2] then begin ShowMessage('OK'); end else begin ShowMessage('nicht vorhanden'); // hierzu muss ich wissen, in welchem es nicht vorhanden ist ! end; end; end; Irgendwie habe ich keine Idee. Vielleicht kann mir jemand helfen. Gruss Daniel |
Re: 2 Arrays vergleichen...
Delphi-Quellcode:
Na, was macht denn die erste Zeile hier? Die guckt doch, ob das Arrayelement des ersten Arrays im zweiten Array vorkommt, oder? Dann hat sich doch schon die Frage erledigt.
if sku[lauf1] = Tempsku[lauf2] then
begin ShowMessage('OK'); end else begin ShowMessage('nicht vorhanden'); // hierzu muss ich wissen, in welchem es nicht vorhanden ist ! end; Edit: Oder steh ich grad aufm Schlauch? :gruebel: Sherlock |
Re: 2 Arrays vergleichen...
Du könntest das ganze in zwei Teile teilen:
- Erster Array durchgehen und schauen, welche Elemente im Zweiten nicht vorkommen - Zweites Array durchgehen und schauen, welche Elemente im Ersten nicht vorkommen Einfach für jeden Array-Eintrag das jeweils andere Array durchlaufen und in einer boolean Variable merken, ob du es schon gefunden hast. Bist du alle Einträge des Vergleichsarrays durch und deine Variable steht immernoch auf false, existiert das Element im Vergleichsarray nicht. Das wäre eine ganz simple Vorgehensweise. |
Re: 2 Arrays vergleichen...
Delphi-Quellcode:
An einer Boolean-Variabel hatte ich auch schon gedacht, aber da in beiden Arrays sich ca. 100 Werte befinden relativ problematisch...
if sku[lauf1] = Tempsku[lauf2] then
begin ShowMessage('OK'); // wird angezeigt, wenn gleich ist.. end else begin ShowMessage('nicht vorhanden'); // wird bei jedem Werte angezeigt, solange nicht gleich ist. end; end; irgendwie habe ich in dieser hinsicht gerade eine blockade. ich raffe es gerade nicht... |
Re: 2 Arrays vergleichen...
Zitat:
|
Re: 2 Arrays vergleichen...
Ich habe 2 Exceltabellen aus den Tabellen lesen ich jeweile die ganzen Artikelnummern aus (sku):
- 1 Exceltabelle => 1. Array => Temp.xls - 2 Exceltabelle => 2. Array => Blub.xls Bis hierhin kein Problem. Nun möchte ich die Artikelnummern die in den Arrays sind vergleichen und wenn im Temp.xls eine Artnr vorhanden ist, welche in Blub.xls nicht vorhanden ist, dann muss ich das wissen ! Und wenn in Blub.xls eine Artnr vorhanden, welche in Temp.xls nicht vorhanden ist, dann ist das egal! Vllt jetzt ein bisschen verständlicher... Gruss Daniel |
Re: 2 Arrays vergleichen...
Delphi-Quellcode:
viel spass beim "ok" klicken^^
for lauf1 := 1 to j do
begin gefunden := False; for lauf2 := 1 to i do if sku[lauf1] = Tempsku[lauf2] then begin gefunden := True; Break; end; if Gefunden then ShowMessage('OK') else ShowMessage('nicht in TempSku!'); end; for lauf1 := 1 to j do begin gefunden := False; for lauf2 := 1 to i do if sku[lauf2] = Tempsku[lauf1] then begin gefunden := True; Break; end; if Gefunden then ShowMessage('OK') else ShowMessage('nicht in Sku!'); end; |
Re: 2 Arrays vergleichen...
Hallo,
sind pro Tabelle nur eindeutige Werte zulässig? Oder können Einträge auch in einer Tabelle mehrfach vorkommen? Wenn die Daten pro Tabelle eindeutig sind, dann sollten zwei Schleifen reichen.
Delphi-Quellcode:
Jeder Wert der in einer der beiden Tabellen ungleich 0 ist,
for j:=high(sku) downto 0 do
for i:= high(tempSku) downto 0 do if sku[j] = tempSku[i] then begin sku[j]:=0; tempSku[i]:=0; end; ist in der jeweiligen anderen Tabelle nicht enthalten. ... oder habe ich da einen Denkfehler? Grüße Klaus |
Re: 2 Arrays vergleichen...
Hallo,
ich würde die Artikelnummern in zwei sortierte String-Listen (alternativ Integer-Listen) eintragen:
Delphi-Quellcode:
Getippt und nicht getestet.
procedure SubtractStrings(minuend, subtrahend, difference: TStrings);
var i: Integer; begin difference.Clear; for i := 0 to Pred(minuend.Count) do if subtrahend.IndexOf(minuend[i]) < 0 then difference.Add(minuend[i]); end; Grüße vom marabu |
Re: 2 Arrays vergleichen...
Vielen Dank erstmal für eure Antworten...ich werde alle Varianten einmal ausprobieren...
Zitat:
Gruss Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr. |
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