Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2009, 15:54   #1
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию Отсеивание лишних строк

Цель такая: в мемо помещается текст (построчный), в edit вбивается необходимая длина, в мемо2 должны попасть лишь те строки текста длина которых не превышает введенную.

Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,o,w:integer;
p:string;
begin
p:=edit1.text;
w:=strtoint(p);
for i:=0 to Memo1.Lines.Count-1 do
o:=length(memo1.lines[i]);
if o<=w then
Memo2.Lines.Add(memo1.lines[i]);
end;
end.
При запуске вообще ничего не происходит( в общем не работает). Нужна помощь
V@mpir вне форума Ответить с цитированием
Старый 08.06.2009, 16:26   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,o,w:integer;
p:string;
begin
 p:=edit1.text;
 w:=strtoint(p);
 for i:=0 to Memo1.Lines.Count-1 do
 begin
  o:=length(memo1.lines[i]);
  if o<=w then
  Memo2.Lines.Add(memo1.lines[i]);
 end;
end;
end.
SERG1980 вне форума Ответить с цитированием
Старый 08.06.2009, 16:28   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вы забыли добавить begin и end у цикла:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i,o,w:integer;
 p:string;
begin
 Memo2.Lines.Clear;
 p:=edit1.text;
 w:=strtoint(p);
 for i := 0 to Memo1.Lines.Count - 1 do
 begin
  o:=length(memo1.lines[i]);
  if o<=w then
   Memo2.Lines.Add(memo1.lines[i]);
 end;
end;
Но зачем вам столько много переменных?
Они только мешают и занимают память в программе
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 Memo2.Lines.Clear;
 for i := 0 to Memo1.Lines.Count - 1 do
 begin
  if length(memo1.lines[i]) <= strtoint(Edit1.Text) then
   Memo2.Lines.Add(memo1.lines[i]);
 end;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 08.06.2009, 16:35   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а вот эту бы я оставил
Код:
 w:=strtoint(edit1.text);
а то каждый раз определять разрешенную длину
и тогда получим
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i, w: integer;
begin
 Memo2.Lines.Clear;
 w:=strtoint(edit1.text);
 for i := 0 to Memo1.Lines.Count - 1 do
    if length(memo1.lines[i]) <= w then
       Memo2.Lines.Add(memo1.lines[i]); 
end;
при желании можно еще эксепшоны обработать
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог функции Trim-удаление лишних пробелов в начале и в конце передаваемой строки GULINA Помощь студентам 6 23.05.2009 15:07
Удаление лишних пробелов. Ввод/вывод в файл. Иван 883 Помощь студентам 13 31.03.2009 19:39
удаление лишних данных в ячейке mistx Microsoft Office Excel 2 24.02.2009 18:32
Матрица A состоит из 8 строк и 6 столбцов. вычесть из всех её строк, начиная со второй, первую строку Dimak24 Помощь студентам 1 19.12.2008 15:45
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14