Ну не хочется мне искать 19 и 20, хочу чтобы искал любое 4-х значное число в строке, т.к. кроме года в строке других 4-х значных чисел нет.
Вот набросал код - работает, но получился сильно громоздкий. Облагородьте его пожалуйста! ;)
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
function IsDid(ch:string):bool; begin if Pos(ch,'0123456789') <> 0 then result:=true else result:=false; end; procedure TForm1.Button1Click(Sender: TObject); var st:string; i,chCount,preChCount:integer; ch:string[1]; year:string[4]; begin st:='lkjkljkljlk544_2009fsd54s53f3'; year:=''; chCount:=0; preChCount:=0; for I := 1 to length(st) do begin ch:=Copy(st,i,1); Memo1.Lines.Add('символ:'+ch); if IsDid(ch) = true then begin preChCount:=preChCount+1; chCount:=chCount+1; Memo1.Lines.Add('символ - число, счетчик сиволов='+IntToStr(chCount));
if (chCount < 5) and (preChCount>0) then begin year:=year+ch; if chCount = 4 then Begin Memo1.Lines.Add('Год:'+year); End; end else begin chCount:=0; year:=''; end; end else // if IsDid(ch) = false begin preChCount:=preChCount-1; chCount:=0; year:=''; if preChCount < 0 then preChCount:=0 else end; end;
end;
end.
|
|