AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) TStringList bleibt leer nach Find, nur warum? *gelöst*

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

Ein Thema von KodeZwerg · begonnen am 1. Jul 2018 · letzter Beitrag vom 1. Jul 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.061 Beiträge
 
Delphi 10.3 Rio
 
#1

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

  Alt 1. Jul 2018, 00:51
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;
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 1. Jul 2018 um 04:15 Uhr)
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
136 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: TStringList bleibt leer nach Find, nur warum?

  Alt 1. Jul 2018, 01:12
(SList.Count > 0)
ergibt natürlich immer False... ist ja noch nix in der Liste drin.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.061 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TStringList bleibt leer nach Find, nur warum?

  Alt 1. Jul 2018, 01:23
Jupp! Ich wusste zwar was ich wollte nur die Reihenfolge war falsch.
if ((AddSList(_HWnd) = True) and (SList.Count > 0)) then Danke!
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 1. Jul 2018 um 04:16 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

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

  Alt 1. Jul 2018, 08:34
So nebenbei bemerkt:

Warum (AddSList(_HWnd) = True) aber dann nur (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.

Geändert von Schokohase ( 1. Jul 2018 um 08:38 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

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

  Alt 1. Jul 2018, 08:55
if ((AddSList(_HWnd) = True) and ((SList.Count > 0) = True))

Und ich prüfe nie auf True..

if ((AddSList(_HWnd)) and ((SList.Count > 0)))

ist vollkommen ausreichend.

gruss
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
881 Beiträge
 
#6

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

  Alt 1. Jul 2018, 09:58
@KodeZwerg: Zieh dir mal dein Thread rein: https://www.delphipraxis.net/184484-...alse-part.html
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.658 Beiträge
 
Delphi 7 Personal
 
#7

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

  Alt 1. Jul 2018, 10:52
Lies gleich https://www.delphipraxis.net/1295933-post43.html
Da steht die Essenz!
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.061 Beiträge
 
Delphi 10.3 Rio
 
#8

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

  Alt 1. Jul 2018, 13:11
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 20:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf