![]() |
Abgleich
Hallo,
ich habe ein Programm geschrieben, welches ermitteln soll wie oft eine Zahl in einem Array vorkommt. Leider erhalte ich als Ergebnis immer 1. Ist die Zahl 2* vorhanden, erhalte ich als Ergebnis 0 mal vorhanden.
Delphi-Quellcode:
begin
b:=0; a:=strtoint(Edit1.text); for c:=Memo1.lines.count - 1 downto 0 do begin if c=a then b:=b+1; else if a<>b then Label1.caption:= ' Nicht vorhanden ' ; end; Label1.caption:=inttostr(b) + ' mal vorhanden'; |
AW: Abgleich
Delphi-Quellcode:
Ungetestet, müsste aber funktionieren, wenn ich jetzt im Halbschlaf keinen Fehler gemacht habe.
begin
b:=0; a:=Edit1.text; for c:=Memo1.lines.count - 1 downto 0 do if Memo1.lines.strings[c]=a then b:=b+1; if b > 0 then Label1.caption:=inttostr(b) + ' mal vorhanden' else Label1.caption:='Nicht vorhanden'; Du hast in Deinem Beispiel nicht den Inhalt der Zeilen abgefragt sondern nur den Zähler der For-Schleife. Damit kommt bei Dir auch immer nur 1 raus. |
AW: Abgleich
Hallo RWarnecke,
danke für die schnelle Antwort und die Erklärung, ich habe deins ausprobiert, aber er gibt mir hier :
Delphi-Quellcode:
Incompatibel types : got " longint" expected "AnsiString"
if Memo1.lines.strings[c]=a then b:=b+1;
|
AW: Abgleich
Dann wandle die Einträge im Memo in Integer um:
Delphi-Quellcode:
if StrToIntDef(Memo1.lines.strings[c], 0)=a then b:=b+1;
|
AW: Abgleich
Da hast Du a vermutlich nicht als String deklariert.
[edit] Roter Kasten? Statt StrToIntDef würde ich hier TryStrToInt vorziehen, aber das muss der TE entscheiden. [/edit] |
AW: Abgleich
ok vielen dank, ich hatte tatsächlich a nicht als string deklariert :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz