AGB  ·  Datenschutz  ·  Impressum  







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

Doppelte Einträge in Array finden

Ein Thema von BungeeBug · begonnen am 24. Jan 2004 · letzter Beitrag vom 26. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#1

Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 22:33
Hi,

ich suche eine schnelle Möglichkeitkeit die Einträge in einem sehr Großen Array zuvergleichen.
Am Ende soll kein doppelter Eintrag mehr vorhanden sein. Hat da jmd. ein Stück Code oder kann man sowas schnell schreiben? Ich scheiter im mom immer daran das der erste gleiche Eintrag gefunden wird die darauf folegenden nicht mehr. Ich glaube das es an der Schleife liegt die ich dazu verwende. Ich find aber den Fehler nich ... mag an der grausamen Erkältung liegen ... wenns mir gleich einer zeigt hau ich mir wieder vor den Kopf.

Achso mit sehr groß mein ich 6000 - 7000 Einträge ...
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 22:35
Was hälts du von der Idee mal deinen Code zu posten?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#3

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 22:41
Delphi-Quellcode:
// Gleiche Datein suchen
     FOR i := 0 TO High(MyHashArray) DO
      BEGIN
       j := 0;
       WHILE j <= High(MyHashArray) DO
        BEGIN
          // Sind die Eintrage die selben?
          IF i <> j THEN
           BEGIN
            IF MD5DigestCompare(MyHashArray[i],MyHashArray[j]) THEN // Vergleichen
             BEGIN
              Form1.CheckListBox1.Items.Add(Form1.ListBox1.Items[j]);
              // Doppelten Hashentfernen
               FOR k := j TO High(MyHashArray) DO // Folgende doppelte Einträge entfernen
                BEGIN
                 MyHashArray[k] := MyHashArray[k+1];
                END;
              // SetLength(MyHashArray,High(MyHashArray)-1); // <- E/A Fehler
              j := 0;
             END;
           END;
         inc(j);
        END;
       END;
Ich hab aber nich wirklich den Durchblick ... da kann auch sonst der ein oder ander Fehler drin sein.
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 22:44
Das da ein E/A Fehlöer kommt ist eigentlich logisch, da das Array ja eine bestimmte Länge hat, dessen Felder alle ausgefüllt sind.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 22:53
Und wie sieht es damit aus?

Delphi-Quellcode:
Var A: Array of irgendwas;
  I, I2, I3: Integer;

For I := High(A) - 1 downto 0 do
  For I2 := High(A) downto I + 1 do
    If A[I] = A[I2] Then Begin
      For I3 := I2 to High(A) - 1 do
        A[I3] := A[I3 + 1];
      SetLength(A, High(A));
    End;

Um das Array um einen Eintag zu kürzen:
SetLength(MyHashArray, High(MyHashArray)); Wenn bei dir nur noch ein Eintrag im Array ist:
Delphi-Quellcode:
SetLength(MyHashArray, High(MyHashArray) - 1);

{High(MyHashArray) = 0}
SetLength(MyHashArray, High(MyHashArray) - 1);
SetLength(MyHashArray, 0 - 1);
SetLength(MyHashArray, -1);
und -1 ist nicht möglich, also kommt ein Fehler...
$2B or not $2B
  Mit Zitat antworten Zitat
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#6

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 22:57
Zitat von Matze:
Das da ein E/A Fehlöer kommt ist eigentlich logisch, da das Array ja eine bestimmte Länge hat, dessen Felder alle ausgefüllt sind.
Wird wenn ich SetLength(); benutze das ganze Array überschrieben?
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 23:01
nein

wenn du eine kleinere Größe angibst, als drin ist, dann werden die Letzten (x = alte Anzahl - neue Anzahl) Einträge gelöscht.

wenn du eine größere Größe angibst, als drin ist, dann werden x neue Eintgäge angehängt (x = neue Anzahl - alte Anzahl).

[edit]Nachtag im vorherigen Post]
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Doppelte Einträge in Array finden

  Alt 24. Jan 2004, 23:03
nein, werden nicht alle felder überschrieben bei setlength
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#9

Re: Doppelte Einträge in Array finden

  Alt 25. Jan 2004, 10:40
HI all,

ich hab den Code nun an meinen Angepasst nur funktioniert dieser leider nicht so wie wer soll.
Es werden von 5 Einträgen 3 als doppelt angezeigt, welche aber garnicht doppelt sein können.
Desweitergen bin ich fast sicher das der Code garnicht alle Einträge durchgeht da z.B.:

Code:
For I := High(A) - 1 downto 0 do
Den letzten Index einfach auslässt.
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10

Re: Doppelte Einträge in Array finden

  Alt 25. Jan 2004, 11:34
machmal:

For I := High(A) downto 0 do
statt

For I := High(A) - 1 downto 0 do
Mario
  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 07:18 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