Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

Re: 32-stellige zahlen aus txt oder memo auslesen

  Alt 20. Jul 2007, 19:41
Hi,

ich habe aus Interesse eben diese kleine Funktion geschrieben:
Delphi-Quellcode:
procedure findnumlength(input: string; output: TStrings; numlength: integer=32);
var
  i,j: integer;
  inputlen: integer;
begin
  inputlen := length(input);
  i := 1;
  while i <= inputlen do
  begin
    // die nächsten 32 Stellen prüfen
    j := 0;
    while (i+j<=inputlen) and (input[j+i] in ['0'..'9']) and (j<numlength) do
      inc(j);
    // Wenn alle 32 Stellen eine Ziffer waren, Zahl hinzufügen
    if j = numlength then
    begin
      output.Add(copy(input,i,numlength));
    end;
    // Vorspulen bis zur nächsten Zahl:
    while (not (input[i+j] in ['0'..'9'])) and (i+j<=inputlen) do
      inc(j);
    // zur nächstmöglichen Stelle Springen
    inc(i,j);
  end;
end;
Sie findet alle Zahlen mit x Stellen im "input"-String und gibt sie in "output" aus. Bei meinen Tests hat sie jedenfalls funktioniert. Wenn eine Zahl mehr Stellen als x Stellen hat, werden die ersten x Stellen gefunden. Ich hoffe man versteht den Satz trotz der ganzen Ixxe^^
Wenn die Stellenanzahl genau stimmen muss, also danach keine weiteren Zifefrn folgen müsste es wahrscheinlich reichen, bei "while (i+j<=inputlen) and (input[j+i] in ['0'..'9']) and (j<numlength) do" das " and (j<numlength)" wegzulassen.
  Mit Zitat antworten Zitat