Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Abgleich (https://www.delphipraxis.net/171841-abgleich.html)

songoku 28. Nov 2012 06:34

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';

RWarnecke 28. Nov 2012 06:40

AW: Abgleich
 
Delphi-Quellcode:
  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';
Ungetestet, müsste aber funktionieren, wenn ich jetzt im Halbschlaf keinen Fehler gemacht habe.

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.

songoku 28. Nov 2012 06:52

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:
  if Memo1.lines.strings[c]=a then b:=b+1;
Incompatibel types : got " longint" expected "AnsiString"

mkinzler 28. Nov 2012 07:04

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;

DeddyH 28. Nov 2012 07:04

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]

songoku 28. Nov 2012 07:17

AW: Abgleich
 
ok vielen dank, ich hatte tatsächlich a nicht als string deklariert :-D


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