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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2008, 17:50   #1
frayerok
 
Регистрация: 21.09.2008
Сообщений: 6
По умолчанию Выборка текста

Здравствуйте.Мне нужно быстро по работе сделать прогу,а в делфи начал розбираться только неделю назад помогите плс.
Мне нужно чтобы с ТХТ файла делалась выборка 100 строк(разных) и вставлялись в поле мемо.Как это можна реализовать.Можете скинуть исходник чтобы я посмотрел.
Заранее благодарен.
frayerok вне форума Ответить с цитированием
Старый 21.09.2008, 18:04   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Каков критерий выборки?
_Dmitry вне форума Ответить с цитированием
Старый 21.09.2008, 18:05   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Первых 100 строк или по какому-то правилу?
puporev вне форума Ответить с цитированием
Старый 21.09.2008, 18:39   #4
frayerok
 
Регистрация: 21.09.2008
Сообщений: 6
По умолчанию

Просто например в файле 100к строк.Чтобы была выборка любых 100 строк с этого файла.
Правила нету.Главное чтобы каждый раз когда нажимаю на кнопку были разные строки.
P.S Спс за то что откликнулись

Последний раз редактировалось frayerok; 21.09.2008 в 18:45.
frayerok вне форума Ответить с цитированием
Старый 21.09.2008, 19:05   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
var
  str: TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
  str:=TStringList.Create;
  str.LoadFromFile('file.txt');
  randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  Memo1.Clear;
  for i:=1 to 100 do
    Memo1.Lines.Add(str.Strings[random(str.Count)])
end;
_Dmitry вне форума Ответить с цитированием
Старый 21.09.2008, 19:25   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Чтобы строчки не повторялись можно так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, k: integer;
begin
  Memo1.Clear;
  for i:=1 to 100 do
  begin
    k := random(str.Count);
    Memo1.Lines.Add(str.Strings[k]);
    str.Delete(k)
  end
end;
eoln вне форума Ответить с цитированием
Старый 21.09.2008, 19:46   #7
frayerok
 
Регистрация: 21.09.2008
Сообщений: 6
По умолчанию

Ой братцы спс.Говорила мама учи програмирование
Просто сейчас сайтами занимаюсь(дорвеями) и пишу прогу чтобы минимализировать ручную работу.Большое вам спасибо.
frayerok вне форума Ответить с цитированием
Старый 21.09.2008, 19:49   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Я бы сделал так. Иначе будут проблемы с повторяемостью опыта (когда из str удалим все строки)...
Код:
const
  n = 100;

var
  str: TStringList;
  M: set of 0..n-1;

procedure TForm1.FormCreate(Sender: TObject);
begin
  str:=TStringList.Create;
  str.LoadFromFile('file.txt');
  randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i,k: integer;
begin
  Memo1.Clear;
  M:=[];
  i:=0;
  repeat
    k:=random(str.Count);
    if k in M then continue;
    include(M,k);
    Memo1.Lines.Add(str.Strings[k]);
    inc(i);
  until (i >= n) or (i >= str.Count);
end;
_Dmitry вне форума Ответить с цитированием
Старый 21.09.2008, 20:39   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

100 строк, 100 выборок
1) k := random(str.Count); от 0 до 99 включительно
str.Delete(k) //str.Count уменьшится на 1
2) k := random(str.Count); от 0 до 98
str.Delete(k) //str.Count уменьшится на 1
...

Повтора не будет, на всякий случай можно добавить if str.Count = 0 then break
eoln вне форума Ответить с цитированием
Старый 21.09.2008, 20:44   #10
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Нет, имелось ввиду если мы второй, третий, четвёртый раз нажмём кнопку Button1, то может получиться так, что и строк для выбора не останется.
_Dmitry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка по среднему Kip Microsoft Office Access 3 11.08.2008 21:56
ADO, выборка из таблицы. Roof БД в Delphi 2 09.07.2008 18:51
Выборка из таблицы ivp88 БД в Delphi 5 12.01.2008 14:36
выборка Ser_gl Microsoft Office Excel 1 24.08.2007 20:49
Выборка John_chek БД в Delphi 10 27.06.2007 08:43