Показать сообщение отдельно

  #10  
Старый 24.04.2009, 02:47
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
С нами: 9980798

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
Сообщение от qloo  
Помогите пожалуйста в Delphi : Дан фрагмент текста. Если пользователь при введении текста ошибся и текст содержит предложения, которые начинаются с маленькой буквы, сформировать и вывести в другой текстовый редактор исправленный текст. Не знаю как отличить большую букву от маленькой да еще и в начале предложения... Надо сделать с помошью TMemo
Без обид)) но исходник специально не стала выкладывать, чтобы Вы сами хоть немного потрудились, а не я все за Вас сделала в 5 утра))), удачного оформления кода!!!

PHP код:
//ваша программа

unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrls;

type
  TForm1 
= class(TForm)
    
Memo1TMemo;
    
Button1TButton;
    
Memo2TMemo;
    
procedure Button1Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

uses StrUtils
;

{
$R *.dfm}
function 
Sha_SpaceCompress(const sstring): string;
var   
pqtpcharchchar;
label rt;
begin:= pointer(s); := nil;
  if 
<> nil then begin:= + (pinteger(4))^;
  if 
t then beginrepeatdec(t);
  if 
t then goto rtuntil (t^ > ' ');
  
SetString(Resultnil, (p) + 1);
  
:= pchar(pointer(Result)); repeat;
  
repeatch := p^; inc(p); until ch ' ';
  
repeatq^ := chch := p^; inc(q); inc(p);
  
until ch <= ' 'q^ := ' 'inc(q); until p t;
  
endendrt: if <> nil then begindec(q); q^ := #0;
  
(pinteger(pchar(pointer(Result)) - 4))^ := pointer(Result);
  
end else Result := '';
end;

function 
CntRecurrences(substrstrstring): integer;
var 
cntpinteger;
begin cnt := 0; while str <> '' do begin
  p 
:= Pos(substrstr); if 0 then inc(cnt)
  else 
:= 1Delete(str1, (Length(substr) - 1));
  
endResult := cnt;
end;

function 
SearchString(const FindStrSourceStringstringNumInteger):
  
Integer;
var 
FirstSymPChar;
  function 
MyPos(const FindStrSourceStringPCharNumInteger): PChar;
  
begin Result := AnsiStrPos(SourceStringFindStr);
  if (
Result nilthen Exit; Inc(Result); if Num 1 then Exit;
    if 
num 1 then Result := MyPos(FindStrResultnum 1);
  
endbegin FirstSym := PChar(SourceString);
  
Result := MyPos(PChar(FindStr), PChar(SourceString), Num) - FirstSym;
  if 
Result 0 then Result := 0;
end;

function 
UpCase(chchar): charbegin if (ch in ['a'..'z''а'..'я'])
then result := chr(ord(ch) - 32) else result := chend;

//аналогична той что выше но только для English символов.
//function UpCaseRus(ch: Char): Char;
//asm
//  CMP   AL,'a'
//  JB    @@exit
//  CMP   AL,'z'
//  JA    @@yo
//  SUB   AL,'a' - 'A'
//  RET
//@@yo:
//  CMP   AL,'?'
//  JNE   @@exit
//  MOV   AL,'?'
//@@exit:
//end;

procedure TForm1.Button1Click(SenderTObject);
var 
i,j,z,c:integers,t:string;
begin Memo2.Lines.Clear; for i:=0 to Memo1.Lines.Count-do
  
begin s:=Memo1.Lines[i]; s:=Sha_SpaceCompress(s);
  
s:=UpCase(s[1])+RightStr(s,Length(s)-1); j:=CntRecurrences('. 's);
  for 
z:=1 to j do begin c:=SearchString('. 'sz);
  
t:=LeftStr(s,c+1)+UpCase(s[c+2])+RightStr(s,Length(s)-c-2);
  
s:=tendMemo2.Lines.Add(s); end;
end;

end

Последний раз редактировалось Flame of Soul; 24.04.2009 в 02:53..
 
Ответить с цитированием