Hallo himitsu,
nehmen wir an, daß ich aus einer Webseite Lotoozahlen kopiere und in ein Editfeld eingebe.
Dabei habe ich ein paar Zeichen mitkopiert.
Nun möchte ich gern die Lottozahlen (ein- und zweistellig) extrahieren und in ein IntegerArray schreiben...
Ich habe da was hingebogen, das auch funktioniert nicht ganz, denn bei der letzten zweistelligen Zahl wird nur die erste Ziffer angezeigt...
Gibt es da einen anderen Ansatz?
Ich füge es mal ein.
Delphi-Quellcode:
USES...
{Zahlen und Zeichen von der Zwischenablage ins Edit eingeben und bei Enter nur die Zahlen
ausgeben. Es werden die Zahlen als Integerwerte in ein IntegerArray mit 6 Indexes gespeichert
Die Zahlengröße ist auf 2 Stellen begrenzt.}
Type
TLottoresult = array of Integer;
//----------------------------------------------
function TForm1.IsZahl(AChar:char):boolean;
begin
result := AChar in ['0'..'9'];
end;
//----------------------------------------------
function TForm1.LZahlen(kopStr:string):TLottoresult;
var i,a:integer;
t:string[2];
flag:boolean;
begin
setLength(Result, 6); a := -1;
for i:= 1 to length(kopStr) do
begin
if isZahl(kopstr[i])and (a < high(Result))then
begin
if (flag = false) {and (a < high(Result)) }then inc(a);
t:=t+kopStr[i];
result[a]:=strtoint(t);
flag:=true;
end else
begin
flag:=false; t:='';
end;
end;
Label2.Caption:= 'IntegerArrayIndexes: '+ inttostr(a);
Label3.caption:=' Es fehlen noch '+ inttostr((high(Result)- a))+ ' Zahlen';
end;
//----------------------------------------------
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Lottoresult:TLottoresult;
i:integer;
str:string;
begin
{bei Enter das Array auslesen und die Zahlen mit Leerzeichen ausgeben}
if Key = VK_Return then
begin
LottoResult := LZahlen(Edit1.text);
for i := 0 to high(LottoResult) do
str := str + ' ' + IntToStr(LottoResult[i]);
Label1.Caption:='String mit Zahlen: '+str;
end;
end;
Im Anhang ein Schnappschuss, das den Fehler zeigt