powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Данные из StringList в StringGrid c определенной строки....
9 сообщений из 9, страница 1 из 1
Данные из StringList в StringGrid c определенной строки....
    #39868595
m.medvedb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Текст файл в нем данные разделены на блоки. Мне нужно заполнить в StringGrid с определенной строки. Номер искомой строки определяю так. ..
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TFormFirst.Button1Click(Sender: TObject);
Var
SL_Row1:TStringList;
i,i1:Integer;
Block_Num:string;
begin
  SL_Row1:=TStringList.Create;
  SL_Row1.LoadFromFile('1.txt');
  Block_Num:='~Value';
 for i:=0 to SL_Row1.Count - 1 do
  if pos (Block_Num, SL_Row1.Strings[i]) > 0 then
..............


      SL_Row1.Free;
 End;
end;
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868598
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m.medvedb,
и где вопрос?
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m.medvedbМне нужно заполнить в StringGrid с определенной строки.

Оператор присвоения в цикле ты уже пробовал? Вдруг получится...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868700
m.medvedb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как в Grid закинуть разобрался... Но вот как сделать выборку по индексу пока не осиливаю. Вопрос как....
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868705
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m.medvedbНу как в Grid закинуть разобрался... Но вот как сделать выборку по индексу пока не осиливаю. Вопрос как....
В правильно поставленом вопросе содержится половина ответа.
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868718
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m.medvedbкак сделать выборку по индексу

Обычно для этого используют квадратные скобки, но некоторые классы предлагают метод get().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868795
m.medvedb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот суть задачи:
есть txt файл разделенный на блоки

Код: pascal
1.
2.
3.
4.
5.
#Description Описание
............
#Name Название столбцов
.........
 ~Value Значения в числах.


В идеале я хочу сделать грамотный открыватор-редактор файла.

Но пока знаний не хватает я пытаюсь сделать по принципу лижбы работало....

В начале я хочу разобраться как находить номер строки блока ~Value и номер последней строки файла для загрузки в StringGrid. В процессе тренировок смотрю результат в Memo.

Что я понял на данный момент
Потренировавшись со StringList я понял , что если строк много(у меня около 10 000) то построчный поиск довольно долгое занятие.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Var
  SL_Row1: TStringList;
  i, n1: Integer;
  Block_Num: string;
begin
  SL_Row1 := TStringList.Create;
  SL_Row1.LoadFromFile('1.TXT');
   Block_Num := '~Value';
    for i := 0 to SL_Row1.Count - 1 do
      if pos(Block_Num, SL_Row1.Strings[i]) > 0 then
        break;
  begin
    n1 := i+1;
    for i:= n1 to SL_Row1.Count - 1 do
      Memo1.lines.add(SL_Row1.Strings[i]); // тут смотрю быстрый результат
       End;
        SL_Row1.Free;
end;



А в этом мне убедиться помог вот этот код (тут количество строк определяется мгновенно)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var
  F : TextFile;
  S : String;
  Cnt : Integer;
begin
  AssignFile(f,'1.las');
  Reset(F);
  Cnt := 0;
  while not Eof(F) do begin
    Read(F, S);
    if Eoln(F) then Inc(Cnt);
    Readln(F);
  end;
  CloseFile(F);
   //Ответ.
  ShowMessage('Всего строк в файле: ' + IntToStr(Cnt));



end;

Вообщем я начал не с того.

В данный момент изучаю примеры по работе с TextFile;
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39868952
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m.medvedbПотренировавшись со StringList я понял , что если строк много(у меня около 10 000) то построчный поиск довольно долгое занятие.
...

А в этом мне убедиться помог вот этот код (тут количество строк определяется мгновенно)

Очень странные наблюдения. Неоптимальный поиск по подстрокам медленный, а убедиться в этом помогло построчное чтение из файла.
pos(Block_Num, SL_Row1.Strings[i]) выполняет поиск подстроки по всей строке, тебе это совсем не нужно. Если тильда - служебный символ, который встречается редко, можно сравнивать сначала его, а потом CompareMem(Pointer(Str), Pointer(SubStr), Length(SubStr)*SizeOf(Char))
...
Рейтинг: 0 / 0
Данные из StringList в StringGrid c определенной строки....
    #39869401
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m.medvedb,

подозреваю, что в коде медленный не поиск, а добавление тысяч строк (если общее количество порядка 10000) в Memo, впридачу без отключения перерисовки в процессе (отключается через Memo.Lines.BeginUpdate - Memo.Lines.EndUpdate).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Данные из StringList в StringGrid c определенной строки....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]