(Gast)
n/a Beiträge
|
AW: Parsen von Seitenzahlen
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;
|
|
Zitat
|