AGB  ·  Datenschutz  ·  Impressum  







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

2 Arrays vergleichen...

Ein Thema von finalr · begonnen am 17. Jun 2008 · letzter Beitrag vom 20. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
finalr

Registriert seit: 13. Mär 2008
17 Beiträge
 
#1

2 Arrays vergleichen...

  Alt 17. Jun 2008, 16:47
Hi,

ich habe hier 2 Arrays und möchte diese gerne vergleichen, soweit auch kein Problem !

Delphi-Quellcode:
  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;
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.

Irgendwie habe ich keine Idee. Vielleicht kann mir jemand helfen.

Gruss Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#2

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 16:59
Delphi-Quellcode:
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;
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.

Edit: Oder steh ich grad aufm Schlauch?

Sherlock
Oliver
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 16:59
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.
  Mit Zitat antworten Zitat
finalr

Registriert seit: 13. Mär 2008
17 Beiträge
 
#4

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 17:26
Delphi-Quellcode:
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;
An einer Boolean-Variabel hatte ich auch schon gedacht, aber da in beiden Arrays sich ca. 100 Werte befinden relativ problematisch...

irgendwie habe ich in dieser hinsicht gerade eine blockade. ich raffe es gerade nicht...
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 17:30
Zitat von finalr:
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.
Das machst du aber nicht mit deinem Code. Bei 100 Werten musst du dann wahrscheinlich sehr oft "OK" klicken. Was willst du denn genau machen?
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
finalr

Registriert seit: 13. Mär 2008
17 Beiträge
 
#6

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 17:56
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
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#7

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 18:03
Delphi-Quellcode:
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;
viel spass beim "ok" klicken^^
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 19:16
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:
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;
Jeder Wert der in einer der beiden Tabellen ungleich 0 ist,
ist in der jeweiligen anderen Tabelle nicht enthalten.

... oder habe ich da einen Denkfehler?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: 2 Arrays vergleichen...

  Alt 17. Jun 2008, 20:03
Hallo,

ich würde die Artikelnummern in zwei sortierte String-Listen (alternativ Integer-Listen) eintragen:

Delphi-Quellcode:
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;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
finalr

Registriert seit: 13. Mär 2008
17 Beiträge
 
#10

Re: 2 Arrays vergleichen...

  Alt 18. Jun 2008, 00:15
Vielen Dank erstmal für eure Antworten...ich werde alle Varianten einmal ausprobieren...

Zitat von Klaus01:
Hallo,

sind pro Tabelle nur eindeutige Werte zulässig?
Oder können Einträge auch in einer Tabelle mehrfach vorkommen?
Die Einträge sind eindeutig also pro Array kann die Artikelnummer nur einmal vorkommen.

Gruss Daniel
  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 17:24 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