Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 23
Delphi 6-7

Загрузка из текстового файла в StringGrid

03.07.2020, 14:46. Показов 2666. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго! Есть необходимость загрузки данных из текстового фала в stringgrid. Искал по форуму варианты похожие на мой, но не нашел. С программированием вообще на ВЫ. С математической обработкой таблиц вроде разобрался, а вот загрузить и рассортировать в таблицу значения из текста, не могу. Сам текстовый файл специфический. Да и динамически в зависимости от калибровки, файл может иметь разное количество строк. Сам по роду занятий калибровщик. Есть ось Х, Z и значения под эти оси. Был бы признателен на пинок в нужном направлении. Текстовый файл прилагаю.
Спасибо.
Вложения
Тип файла: txt Калибровка.txt (4.3 Кб, 6 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2020, 14:46
Ответы с готовыми решениями:

Загрузка из текстового файла в StringGrid
доброго времени суток! помогите пожалуйста новичку с решением задачи. задача такова: имеются StringGrid и текстовый файл следующего...

Загрузка базы из текстового файла в StringGrid с возможностью выбора
Имеется вот такая программа в которой есть StringGrid со столбцами «буквы» и «цифры». В папке с программой в папке db есть файл текстовой...

Загрузка данных из Excel и текстового файла в StringGrid (Borland Builder C++)
Здравствуйте! Не подскажите как осуществить загрузку данных из Excel и текстового файла в StringGrid?

28
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 23
06.07.2020, 04:16  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от D1973 Посмотреть сообщение
После выбора какого-либо айтема - в Эдит выведется его название и в СтрингГрид - значения...
D1973, калибровка загружается, в принципе все работает. Только в ComboBox не сохраняется, кроме последней поднятой калибровки. Да в одну таблицу мне нельзя вписывать разные калибровки. Для каждой - своя должна.
Но для меня важно сейчас, как пишется сам код и как это все организовывается. Мне это очень кстати сейчас. Спасибо!

Цитата Сообщение от Пытливый Посмотреть сообщение
Допустим надо в 3 строке грида найти какое-то значение:
Пытливый, это очень даже "оно". Вы мне помогли. Благодарен за любую подсказку..
Немного переделал код и все в принципе для меня готово. Только вместо Edit(ов), будут значения из таблиц. Я просто тренировался

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
result:string;
z:Integer;
begin
  try
  z:=StrToInt(Edit3.Text);//строка
  StringGrid1.Col := StringGrid1.rows[z].IndexOf(Edit2.Text);//значение
  if (StringGrid1.Col <> -1) and (StringGrid1.Col < StringGrid1.rows[z].Count-1) then
  Result := StringGrid1.rows[z-1].Strings[StringGrid1.col];
  Label1.Caption:=result;
  Refresh;
  except
  ShowMessage('Что то не так...');
  Exit;
  end;
  end;
Добавлено через 30 минут
На данном этапе остается еще пару вопросов...
1) Как скопировать значения из таблицы. В калибровку сохранять в принципе смысла нет, можно сразу из таблицы вставить в редактор. Читал, пробовал, но не получается. Я понял, что если goEditing=False, то выделить можно, но не скопировать, а если goEditing=True, то только одну ячейку.. Читал, что применяется функция "type TGridRect = record", но опять же, для меня это пока, тьма
2) Как в DBchart мышкой можно изменить значения? Тут на форуме смотрел, много об этом писали. Но так и не смог добиться у себя результата. Даже точки к значениям вывести не смог.. Значения то из таблицы я вывел. Нужно чтобы они после редактирования, записались обратно в таблицу. Просто у меня зависимости по таблицам (калибровкам) достаточно большие, значения далее превращаются в расчет, который используется далее по калибровкам. В принципе там 3х мерная модель..
Буду признателен за помощь. Вы мне очень помогли, я почти неделю, в свободное от работы время, хотел поднять калибровку, но так и не смог.
А тут, сразу помогли!
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.07.2020, 15:38
Цитата Сообщение от Spetre Посмотреть сообщение
Как скопировать значения из таблицы. В калибровку сохранять в принципе смысла нет, можно сразу из таблицы вставить в редактор.
что значит - "вставить в редактор"? что за "редактор"? Имеется в виду простое Memo?

goEditing позволяет пользователю редактировать ячейки грида (менять их).

Цитата Сообщение от Spetre Посмотреть сообщение
2) Как в DBchart мышкой можно изменить значения?
а откуда "вдруг" взялся DBChart ?

Цитата Сообщение от Spetre Посмотреть сообщение
Значения то из таблицы я вывел. Нужно чтобы они после редактирования, записались обратно в таблицу.
ну и это поясни, куда вывел значения, где ты их редактировал (опять "редактор" ?!) и записать их "обратно" в таблицу - это что означает?
0
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 23
06.07.2020, 16:25  [ТС]
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
что значит - "вставить в редактор"? что за "редактор"? Имеется в виду простое Memo?
Редактор калибровок.. Я же расчет делаю калибровки. Редактор позволяет делать импорт из текста, CSV либо проще сразу занести значения в таблицу редактора...

Цитата Сообщение от mr-Crocodile Посмотреть сообщение
а откуда "вдруг" взялся DBChart ?
Как это откуда? Вывел некий коэфф. в график. Его надо вручную скорректировать и занести обратно в расчет, далее пересчитать. В принципе, если редактировать прямо в таблице, расчет у меня работает, все считается. Удобнее было бы на графике по точкам вручную пробежаться. Для этого и нужен..

Толщину на графике я смог сделать, цвет не хочет менять, да и точки на графике не получается вывести. Значения то она рисует..
Миниатюры
Загрузка из текстового файла в StringGrid   Загрузка из текстового файла в StringGrid   Загрузка из текстового файла в StringGrid  

0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.07.2020, 16:41
Цитата Сообщение от Spetre Посмотреть сообщение
Редактор калибровок.. Я же расчет делаю калибровки. Редактор позволяет делать импорт из текста, CSV либо проще сразу занести значения в таблицу редактора...
Имхо, не проще.
По моему мнению, проще как раз сохранить грид в нужном формате (хоть текст, хоть CSV) и загрузить в редакторе калибровок.

Цитата Сообщение от Spetre Посмотреть сообщение
В принципе, если редактировать прямо в таблице, расчет у меня работает, все считается. Удобнее было бы на графике по точкам вручную пробежаться. Для этого и нужен..
Понятно. Ну с DBChart я помочь не могу, нет опыта. Может быть, кто-то другой подскажет.
И, кстати, лучше выкладывать исходники своего проекта. Есть вероятность, что кто-то поправить прямо в коде или скажет, что нужно изменить/дополнить в коде.
0
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 23
06.07.2020, 17:03  [ТС]
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
Имхо, не проще.
По моему мнению, проще как раз сохранить грид в нужном формате (хоть текст, хоть CSV) и загрузить в редакторе калибровок.
mr-Crocodile, там есть некие сложности.. Объяснять долго, да и навряд ли вам это нужно. Мне легче и намного быстрее с grid сразу вынести в редактор.. На счет DBChart, понял. Буду искать решения, должны же они быть, хотя не столь важно это на данном этапе. Сейчас надо пробовать копировать значения таблиц..
Спасибо.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.07.2020, 17:08
Цитата Сообщение от Spetre Посмотреть сообщение
mr-Crocodile, там есть некие сложности.. Объяснять долго, да и навряд ли вам это нужно. Мне легче и намного быстрее с grid сразу вынести в редактор..
Ну, как скажешь. Тебе это точно виднее на месте.
У меня лично нет редактора и как с grid "сразу вынести в редактор" я не знаю.
может быть, через буфер обмена можно это сделать.
может быть, можно найти открытое окно редактора, контрол ввода и через оконное сообщение отправить информацию в редактор. В любом случае, мне это не проще.
0
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 23
06.07.2020, 17:13  [ТС]
Может я не так выразился.. Мне нужно просто скопировать значения ячеек из stringgrid в поле редактора. Количество строк и столбцов там одинаково, так как рассчитываю непосредственную калибровку..
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
06.07.2020, 17:27
Цитата Сообщение от Spetre Посмотреть сообщение
Мне нужно просто скопировать значения ячеек из stringgrid в поле редактора.
т.е. через буфер обмена?

Добавлено через 9 минут
попробуй код отсюда - Stringgrid копирование содержимого строки и вставка его в выделенную строку

с Excel твой редактор нормально вставляет?
вот тут ещё такой вариант кода для копирования выделенных в гриде ячеек в буфер обмена:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
  X, Y: Integer;
begin
  S := '';
  for Y := StringGrid1.Selection.Top to StringGrid1.Selection.Bottom do
  begin
    for X := StringGrid1.Selection.Left to StringGrid1.Selection.Right - 1 do
      S := S + StringGrid1.Cells[X, Y] + #9;
    S := S + StringGrid1.Cells[StringGrid1.Selection.Right, Y] + sLineBreak;
  end;
  Delete(S, Length(S) - Length(sLineBreak) + 1, Length(sLineBreak));
  Clipboard.AsText := S;
end;
1
0 / 0 / 0
Регистрация: 30.06.2020
Сообщений: 23
06.07.2020, 18:50  [ТС]
Нашел в тырнете..https://delphisources.ru/pages... ipbrd.html
Код видимо под какую то другую реализацию версии. Немного переделал, все работает отлично. Код на кнопку
Только надо добавить в uses, Clipbrd.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var
  i, j: Integer;
  s: string;
  sg:TStringGrid;
  CopySel: Boolean;
  CL: integer;
  RT: integer;
  CR: integer;
  RB: integer;
begin
  //SG:=StringGrid1;
 
  s := '';
  with StringGrid1 do
  begin
    if CopySel then
    begin
      CL := sg.Selection.Left;
      CR := sg.Selection.Right;
      RT := sg.Selection.Top;
      RB := sg.Selection.Bottom;
    end;
    //при необходимости FixedRows и FixedCols можно заменить на 0
    if (CL < FixedCols) or (CL > CR) or (CL >= ColCount) then
      CL := FixedCols;
    if (CR < FixedCols) or (CL > CR) or (CR >= ColCount) then
      CR := ColCount - 1;
    if (RT < FixedRows) or (RT > RB) or (RT >= RowCount) then
      RT := FixedRows;
    if (RB < FixedCols) or (RT > RB) or (RB >= RowCount) then
      RB := RowCount - 1;
    for i := RT to RB do
    begin
      for j := CL to CR do
      begin
        s := s + Cells[j, i];
        if j < CR then
          s := s + #9;
      end;
      s := s + #13#10;
    end;
  end;
  Clipboard.AsText := s;
end;
Добавлено через 3 минуты
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
с Excel твой редактор нормально вставляет?
Да, с ним все в порядке..
Ваш код намного меньше того, что я нашел. Я проверю и его..

Добавлено через 23 минуты
mr-Crocodile, Ваш код работает через выделение. Все отлично. Я использовал оба метода, как через выделение и как полная таблица.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2020, 18:50
Помогаю со студенческими работами здесь

Сохранение из StringGrid массива в файл и загрузка из файла в StringGrid
Всем доброго времени суток =) У меня есть загрузка массива из StringGrid на Delphi 2010: //загрузка из файла procedure...

Заполнение stringgrid из текстового файла
Здравствуйте! Нужна ваша помощь - при нажатии на кнопку, заполняется stringgrid 4х5 данными из текстового файла. Как сохранять значения из...

Вывод в stringgrid из текстового файла.
Здравствуйте. У меня есть массив. Помогите, пожалуйста доделать вывод в stringgrid из текстового файла. У меня выводит всё содержимое файла...

Таблица из текстового файла в StringGrid
Задание - Результаты сдачи сессии. В задаче нужно работать с файлами, то есть нужно из файла переносить в стрингрид таблицу, как это...

Запись в StringGrid из текстового файла
Есть 8 столбцов OpenDialog1.Execute; AssignFile(f, OpenDialog1.FileName); with StringGrid1 do begin cells :=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
Модель здравоохранения 12. добавление болезней через ресурпул, как аварии
anaschu 22.05.2026
Болезни — это ключевая часть нашей модели. Нам нужно, чтобы работник периодически уходил на больничный, его задание при этом зависало, а после выздоровления работа возобновлялась. Реализуем это двумя. . .
Модель здравоохранения 11. Создаём классы Задание и Работник
anaschu 22.05.2026
В AnyLogic каждая заявка и каждый ресурс — это объект определённого класса. Нам нужно создать два класса: Задание (заявка) и Работник (ресурс). Класс Задание В дереве проекта нажимаем правой. . .
Модель здравоохранения 10. Новая модель, смотрим, как добавлять логические блоки, и что писать внутри
anaschu 22.05.2026
Открываем AnyLogic, создаём новый проект. В дереве проекта появляется класс Main — это главный агент, в котором будет жить вся наша логика. Палитра блоков Слева находится палитра. Нас интересует. . .
модель ЗдравоСохранения 9. Новая модель, разбираемся, как ее создавать
anaschu 22.05.2026
В этой серии постов мы построим модель небольшого рабочего коллектива. Сотрудники получают задания, выполняют их, иногда болеют — и мы хотим посчитать, сколько это стоит компании. Метод. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru