Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Listen vergleichen (https://www.delphipraxis.net/196618-listen-vergleichen.html)

EWeiss 4. Jun 2018 13:13

AW: Listen vergleichen
 
Zitat:

Zitat von Fritzew (Beitrag 1403820)
Wenn es so ist steht der Process in vProcessID.
Dein Problem ist in diesem Fall ein anderes......
Wie wäre es mit Debuggen?

Das nutzt mir nichts und ja habe ich schon.
Ich muss alle Prozesse mit den ID's in der Liste vergleichen und auf dem wege geht es nicht
weil beim ersten vergleich ich schon dein "Beispiele" mit break.. aus der Liste rausspringe.

False wird nie auftreten.

gruss

Fritzew 4. Jun 2018 13:18

AW: Listen vergleichen
 
Emil dann steht das auch da drin,


Delphi-Quellcode:
var
   k, i: integer;
begin
   bFound := false;
   for k := 0 to (vProcList.Count - 1) do
      begin
         for i := 0 to vProzessID.Count do
               vProcList[k].ID = vProzessID[i].ID then
               begin
                  bFound := true;
                  break;
               end;

        if bfound then break;

      end;
end;

Das ist jetzt das gleiche ohne die Find function.....

EWeiss 4. Jun 2018 13:27

AW: Listen vergleichen
 
Danke werde es gleich mal versuchen..

Nur nochmal zur vorherigen Version.. mit deinem Break

Bilder sagen mehr als worte.

Beim ersten prüfen durchlauf ich die Liste und wenn der erste Eintrag gefunden wurde schaltest du auf true und springst raus
aus der Funktion es wird also niemals auf die anderen Einträge hin in meiner Liste geprüft.

Deshalb wird false niemals eintreten.
Was ist dann mit der ID 2260 und der 4932 ? die werden in deinem Fall niemals geprüft.

Deine neue Version werde ich mal testen Danke.

EDIT:
vProcList[k].ID hat nur lese Eigenschaft.
deshalb der Umweg über Find

gruss

Fritzew 4. Jun 2018 13:30

AW: Listen vergleichen
 
Ok dann fassen wir zusammen, Du willst überprüfen ob einer der einträge in vProzessID in vProcList ist?
Dann lass das break einfach weg.

EWeiss 4. Jun 2018 13:36

AW: Listen vergleichen
 
Zitat:

Zitat von Fritzew (Beitrag 1403827)
Ok dann fassen wir zusammen, Du willst überprüfen ob einer der einträge in vProzessID in vProcList ist?
Dann lass das break einfach weg.

Wie ich schon sagte es tritt niemals der False Status ein glaube es mir ich habe es debuggt und sehe es auch weil mein Control niemals entladen wird.

Es sei denn ich mache es so.. aber dann ist der False Status falsch weil er immer auf False gesetzt wird wenn nichts gefunden.

Delphi-Quellcode:
  for K := 0 to (vProcList.Count - 1) do
  begin
    if vProzessID.Find(vProcList[K].ID, proc) then
      bFound := true
    else
    bFound := false
  end;
gruss

Fritzew 4. Jun 2018 13:39

AW: Listen vergleichen
 
Emil wir reden wieder mal aneinander vorbei...
Bei meiner Version wird das bfound nur true wenn etwas gefunden wurde. bfound wird ja vor der Schleife auf false gesetzt.
Ich versteh echt nicht was Du eigentlich erreichen willst.

EWeiss 4. Jun 2018 13:47

AW: Listen vergleichen
 
Zitat:

Zitat von Fritzew (Beitrag 1403829)
Emil wir reden wieder mal aneinander vorbei...
Bei meiner Version wird das bfound nur true wenn etwas gefunden wurde. bfound wird ja vor der Schleife auf false gesetzt.
Ich versteh echt nicht was Du eigentlich erreichen willst.

Hmmm also ich versuche es mal anders.

Vier einträge 0, 1, 2, 3
50 Einträge in der Prozessliste.

Wenn du alle durchgehst und diese ID's gefunden hast wird bfound auf true gesetzt.
Jetzt beende ich eine Anwendung habe aber immer noch meine ID's dann wird neu geprüft.

Du prüfst 0, 1, 2, 3
0,1,2 wird gefunden also ist bfound = true.

Nun was ist mit dem vierten! ja er ist false weil nicht gefunden.
Aber nirgends wird dann der Status bfound in dem Fall auf false gesetzt du verstehst was ich meine ?

Also ist bfound immer true und wird niemals false.

Ich prüfe danach auf
Delphi-Quellcode:
  if not bFound then
   begin
da es nie eintritt kann ich mein Control nicht entladen.

gruss

Fritzew 4. Jun 2018 13:57

AW: Listen vergleichen
 
Sowas
Delphi-Quellcode:
procedure TForm11.DoProcessloop;
var
   loop, indexInList: integer;
begin
   for i := vProzessID.Count - 1 downto 0 do
      begin
         indexInList := vProcList.IndexOf(vProzessID[loop].ID);

         if indexInList >= 0 then
            begin
            // Wir haben den Procces gefunden
            // Mach was damit

            end
         else
            begin
         // Der Process ist nicht mehr in der Processlist
         // Mach was
         // zb Löschen
        // vProzessID.delete(loop);
            end;

      end;
end;

EWeiss 4. Jun 2018 14:06

AW: Listen vergleichen
 
Ja so geht's vielen Danke ;)

Delphi-Quellcode:
   for K := vProzessID.Count - 1 downto 0 do
   begin
     IntI := vProcList.IndexOf(vProzessID[K].ID);
     if IntI >= 0 then
       bFound := true
     else
     begin
       bFound := false;
       break; // damit es nicht wieder auf true springt hier raus.
     end;
   end;
gruss

Fritzew 4. Jun 2018 14:18

AW: Listen vergleichen
 
Dann fassen wir zusammen:
Es geht eigentlich darum herauszufinden ob vProzessID komplett in vProcList enthalten ist.
Wenn ja true sonst false.

Mit der richtigen Frage hättest Du auch gleich die richtige Antwort bekommen :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Seite 2 von 4     12 34      

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