![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Мне нужно рандомно выдать из файла текст между разделителем '#' к примеру в файле такая запись:
Цитата:
Загружаю весь файл в переменную и дальше думаю надо вести поиск по '#' в файле подсчитать их число и копировать, подскажите точней |
|
#2
|
||||
|
||||
|
узнаешь число этих # = N, потом берешь random(N-1)+1, ищешь K-ю решетку (нумеруются теперь с 1) и копируешь весь текст до K+1й
|
|
#3
|
||||
|
||||
|
как узнать число? и искать определенную 2 к примеру
|
|
#4
|
||||
|
||||
|
Загрузил в строку, и циклом проверяешь символы.
Код:
var
s: TStringList;
i: integer;
N: Inetger;
begin
N := 0;
s := TStringList.Create;
s.LoadFromFile(...);
{
for i:=0 to s.Count-1 do
for k:=1 to Length(s.Strings[i]) do
if(s.Strings[i][k] = '#') then
inc(N);
}
// или
for i:=1 to Length(s.Text) do
if(s.Text[i] = '#') then
inc(N);
///Как-то так: Код:
type m=record x, y: integer; var m_: array of m; countN: integer; begin setlength(m_, 1); ... // и дальше все тоже самое,только с учетом, пр нахождении знака "#" надо не только увеличивать их кол-во, но и записывать его местоположение в тексте. |
|
#5
|
||||
|
||||
|
Все как-то сложно, я обычно делаю так - загружаю файл в листбокс а потом :
Код:
procedure TForm1.Button1Click(Sender: TObject); var a:String; s:integer; begin S:=Random(ListBox1.Items.Count-1); A:=Listbox1.Items.Strings[s]; if a='#' then A:=Listbox1.Items.Strings[s+1]; Label1.Caption:=A; end; |
|
#6
|
||||
|
||||
|
Цитата:
|