Einzelnen Beitrag anzeigen

Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#9

AW: Zahlen aus String extrahieren

  Alt 21. Apr 2013, 20:22
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
Miniaturansicht angehängter Grafiken
proggi.jpg  
  Mit Zitat antworten Zitat