![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Прошу помощи. Задание лабы состоит в программировании одной кнопки текстового редактора, в котором присутствуют ListBox и RichEdit. Кнопка должна выполнять следующие действия: 
		
	
		
		
		
		
		
	
		
		
	
	
	В Каждой строчке RichEdit-а найти слово в центре строки. Слова разделяются пробелами. Найденные слова записать в новый файл. У меня есть некоторые наработки, но знаю, что в чем-то есть ошибка, подскажите, пожалуйста, в чем: Код: 
	procedure TForm1.ToolButton13Click(Sender: TObject);
var s: array [1..10] of integer; s1,s2,s3,s4: string; i,j,k:integer; f: TextFile ;
begin
for i:=1 to length(richedit1.lines.strings[i]) do
  s[i]:=trunc(length(richedit1.lines.strings[i])/2);
  begin
  for j:=s[i] downto 1  do
    s1:=richedit1.lines.strings[j];
    s2:=' ';
   while (s1)<>' ' do
       s2:=s2+s1[j];
        break;
   end;
   begin
   for k:=s[i] to length(richedit1.lines.strings[i]) do
   s1:=richedit1.lines.strings[j];
   s3:=' ';
   while (s1)<>' ' do
       s3:=s3+s1[j];
        break;
       end;
      s4:=s2+s3;
      AssignFile(f, '*.txt');
      Append(f);
      Writeln(f, s4);
      Closefile(f);
     end; | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Надо именно так или можно любым способом? 
		
	
		
		
		
		
		
		
			Я бы сделал так: Код: 
	procedure TForm1.Button1Click(Sender: TObject);
var
  I : Integer;
  slWords, slBuf : TStringlist;
begin
  slWords := TStringList.Create;
  slBuf := TStringList.Create;
  Try
    slBuf.Delimiter := ' ';
    For I := 0 To RichEdit1.Lines.Count-1 Do
      Begin
        slBuf.DelimitedText := RichEdit1.Lines[i];
        slWords.Add(slBuf[slBuf.Count div 2]);
      End;
    slWords.SaveToFile('MyFile.txt');
  Finally
    slBuf.Free;
    slWords.Free;
  End;
end;Здесь ищется слово, которое стоит в середине слов в строке. Т.е. если срока 'восемьдесят два три', то должно попасть слово 'два', а не 'восемьдесят', хотя если считать по буквам, то попадает слово 'восемьдесят'. Последний раз редактировалось lmikle, 05.12.2013 в 07:12.  |