Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   TStringList bleibt leer nach Find, nur warum? *gelöst* (https://www.delphipraxis.net/196924-tstringlist-bleibt-leer-nach-find-nur-warum-%2Ageloest%2A.html)

KodeZwerg 30. Jun 2018 23:51


TStringList bleibt leer nach Find, nur warum? *gelöst*
 
Hallo liebe DP-Gemeinde, ich habe in meiner Logik irgendwie etwas falsch und komme einfach nicht weiter.
Ich möchte eine StringList mit Strings füllen die noch nicht enthalten sind und bei neuen wird der hinten rangehangen.

Hier ist der Code (fixed!):
Delphi-Quellcode:
// global
var
  SList: TStringList;

...

constructor TXXX.Create;
begin
  inherited Create;
  SList := TStringList.Create;
end;

destructor TXXX.Destroy;
begin
  SList.Free;
  inherited Destroy;
end;

function AddSList(_HWND: HWND): Boolean;
var
  i: Integer;
  tmp: String;
begin
  Result := False;
  tmp := '';
  i := 0;
  SetLength(tmp, 64);
  SetLength(tmp, GetClassName(_HWnd, PWideChar(tmp), 64));
  SList.Sort;
  if (SList.Find(String(IntToStr(_HWnd)+' <> '+tmp), i) = False) then
   begin
     i := SList.Add(String(IntToStr(_HWnd)+' <> '+tmp));
     Result := True;
   end;
end;

function TXXX.Aufruf(_HWnd: HWND): String;
begin
  Result := '';
  if ((AddSList(_HWnd) = True) and (SList.Count > 0)) then // hier war mein Fehler, Count und HWnd waren vertauscht, Danke @ sahimba
   begin
     Result := SList.Strings[SList.Count-1];
     Memo1.Lines.Add(Result);
   end;
end;

sahimba 1. Jul 2018 00:12

AW: TStringList bleibt leer nach Find, nur warum?
 
(SList.Count > 0)
ergibt natürlich immer False... ist ja noch nix in der Liste drin.

KodeZwerg 1. Jul 2018 00:23

AW: TStringList bleibt leer nach Find, nur warum?
 
Jupp! Ich wusste zwar was ich wollte nur die Reihenfolge war falsch.
Delphi-Quellcode:
if ((AddSList(_HWnd) = True) and (SList.Count > 0)) then
Danke!

Schokohase 1. Jul 2018 07:34

AW: TStringList bleibt leer nach Find, nur warum? *gelöst*
 
So nebenbei bemerkt:

Warum
Delphi-Quellcode:
(AddSList(_HWnd) = True)
aber dann nur
Delphi-Quellcode:
(SList.Count > 0)
?

Entweder
Delphi-Quellcode:
if ((AddSList(_HWnd) = True) and ((SList.Count > 0) = True))
then
(ich prüfe einen Boolean Wert immer nochmal auf True um wirklich wirklich sicher sicher zu zu sein sein)
oder
Delphi-Quellcode:
if (AddSList(_HWnd) and (SList.Count > 0))
then
(ein Boolean ist genug)

PS:

Eine Frage "Warum funktioniert mein Code nicht" wird für die Zukunft sinnlos, wenn man den fehlerhaften Code in der Ursprungsfrage korrigiert.

EWeiss 1. Jul 2018 07:55

AW: TStringList bleibt leer nach Find, nur warum? *gelöst*
 
Delphi-Quellcode:
if ((AddSList(_HWnd) = True) and ((SList.Count > 0) = True))


Und ich prüfe nie auf True..

Delphi-Quellcode:
if ((AddSList(_HWnd)) and ((SList.Count > 0)))


ist vollkommen ausreichend.

gruss

Hobbycoder 1. Jul 2018 08:58

AW: TStringList bleibt leer nach Find, nur warum? *gelöst*
 
@KodeZwerg: Zieh dir mal dein Thread rein: https://www.delphipraxis.net/184484-...alse-part.html

p80286 1. Jul 2018 09:52

AW: TStringList bleibt leer nach Find, nur warum? *gelöst*
 
Lies gleich https://www.delphipraxis.net/1295933-post43.html
Da steht die Essenz!
Gruß
K-H

KodeZwerg 1. Jul 2018 12:11

AW: TStringList bleibt leer nach Find, nur warum? *gelöst*
 
Zitat:

Zitat von Schokohase (Beitrag 1406215)
Eine Frage "Warum funktioniert mein Code nicht" wird für die Zukunft sinnlos, wenn man den fehlerhaften Code in der Ursprungsfrage korrigiert.

Zitat:

if ((AddSList(_HWnd) = True) and (SList.Count > 0)) then // hier war mein Fehler, Count und HWnd waren vertauscht, Danke @ sahimba
Versteh ich nicht, steht doch da was ich falsch hatte? Für die Akten, es war
Zitat:

if ((SList.Count > 0) and (AddSList(_HWnd) = True)) then
Was halt nicht klappen konnte da (SList.Count > 0) an erster Stelle immer 0 ist.

Danke für Boolean Hinweise.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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