{Если пусто то ничего не делать} if sWord='' then begin exit; end; {Проверка на выход слова из поля} if WordDirHor then begin if SCol+Length(sWord)-1 > fm_Main.sg.ColCount then begin MessageDlg(_M_LgOut, mtError, [mbOk], 0); end end else if SRow+Length(sWord)-1 > fm_Main.sg.RowCount then begin MessageDlg(_M_LgOut, mtError, [mbOk], 0); end; for i:=1 to length(sWord) do if sWord[i]='*' then begin // MessageDlg('Поставьте вместо звездочки желаемую букву.', mtInformantion, [ mbOk], 0); fm_Word.ActiveControl := fm_Word.edWord; fm_Word.edWord.SelStart := i-1; fm_Word.edWord.SelLength := 1; EMessage := '*'; Result := false; exit; end; { Проверка прохождения первого слова через середину поля ----------------------} if GameState=gsJustStarted then begin HaveCross := false; for i:=1 to length(sWord) do if FieldNextCell(i).Color=5 then HaveCross := true; if not HaveCross then begin EMessage := _M_LgCenter; Result := false; exit; end; end; {Проверка необходимого пересечения слов и сохранение позиций пересечения} for i:=1 to MaxWordLength do WordCross[i]:=false; HaveCross := false; if GameState=gsGame then begin for i:=1 to Length(sWord) do if FieldNextCell(i).Letter<>' ' then begin WordCross[i] := true; HaveCross := true; end; if not HaveCross then begin EMessage := _M_LgNoCross; Result := false; exit; end; end; {not JustStarted} // else // GameState := gsGame; {Проверка на наличие хотя бы одного FALSE в списке пересечений (Проверка наличие хотя бы одной потраченой буквы)} HaveCross := false; for i:=1 to Length(sWord) do if not WordCross[i] then HaveCross := true; if not HaveCross then begin EMessage := _M_LgNoL2Set; fm_Word.ActiveControl := fm_Word.edWord; Result := false; exit; end; (* {Проверка отсутствия интервалов в списке пересечений = Проверка вложения слов} nest := false; for i:=1 to Length(Word) do if WordCross[i] then begin {A} if nest then begin EMessage := 'Проверка вложения слов: '+inttostr(i); Result := false; exit; end else nest := true end {A} else nest := false; *) {Проверка букв на принадлежность полученным буквам} s := ''; for i:=1 to 7 do s:=s + Players[PCurrent].Letters[i]; for i:=1 to Length(sWord) do begin if not WordCross[i] then if Pos(sWord[i],s)<>0 then Delete(s,Pos(sWord[i],s),1) else if Pos('*',s)<>0 then Delete(s,Pos('*',s),1) else begin EMessage := Format(_M_mLNot,[sWord[i]]); Result := false; exit; end; end; {for}