Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#12

AW: Parsen von Seitenzahlen

  Alt 17. Aug 2012, 17:29
Ich hab so Just4Fun das Problem im ersten Post gelöst. Es funktioniert relativ gut, zumindest bei der Aufgabenstellung

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
    function IntList(s: String; List: TStrings): Boolean;
        function IsValidInteger(S: String): Boolean;
        var
          I, Code: Integer;
        begin
          Val(S, I, Code);
          Result := Code = 0;
        end;
    var
      a, b: String;
      i: Integer;
    begin
      Result := False;
      List.Clear;

      if Pos('-', s) = 0 then //für einzelne Seitenzahlen, z. B. "1"
      begin
        if IsValidInteger(s) then
        begin
          List.Add(Trim(s));
          Result := True;
        end;
        Exit;
      end;

      a := Copy(s, 1, Pos('-', s) - 1); //für Seitenzahlen von bis, z. B. "1-3"
      Delete(s, 1, Pos('-', s));
      b := s;

      if IsValidInteger(a) and IsValidInteger(b) then
      begin
        for i := StrToInt(a) to StrToInt(b) do
          List.Add(IntToStr(i));
        Result := True;
      end;
    end;
var
  s: String;
  sl, slList, slResult: TStringList;
  i: Integer;
begin
  s := '1-3; 10; 17; 21-23';

  sl := TStringList.Create;
  slList := TStringList.Create;
  slResult := TStringList.Create;
  try
    sl.Delimiter := ';';
    sl.DelimitedText := s;
    for i := 0 to sl.Count - 1 do
      if IntList(sl[i], slList) then
        slResult.AddStrings(slList);

    ListBox1.Items.Text := slResult.Text;
  finally
    sl.Free;
    slList.Free;
    slResult.Free;
  end;
end;
  Mit Zitat antworten Zitat