![]() |
|
#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. |