Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/67: Рейтинг темы: голосов - 67, средняя оценка - 4.75
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
1

OpenDialog: открыть текстовый файл и записать его в StringGrid

13.05.2009, 21:54. Просмотров 12817. Ответов 25
Метки нет (Все метки)

Помогите пожалуйста, нужно открыть тхт файл и разместить его в стрингриде
у меня не открывает, может в коде ошибка
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.N3Click(Sender: TObject);
var
i,j:integer;
begin
if Opendialog11.Execute then
begin
a:=inttostr(StringGrid1.RowCount) + ' ';
for j:=0 to StringGrid1.RowCount-1 do
for i:=0 to StringGrid1.ColCount-1 do
begin
a:=a+StringGrid1.Cells[i,j] + ' ';
end;
AssignFile(f1,SaveDialog1.FileName);
closefile(f1);
end;
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2009, 21:54
Ответы с готовыми решениями:

Записать информацию в новый текстовый файл и открыть его программой по умолчанию
Напишите программу, которая прочитает информацию о дисковых устройствах на Вашем компьютере: общее...

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

Открыть для записи текстовый файл data.txt и записать в него полученный массив, закрыть файл
Составить программу с подпрограммами для выполнения следующего алгоритма (предусмотреть процедуры...

Создать текстовый файл и открыть его
Нужно реализовать одну функцию, есть кусок кода, который создаёт текстовый файл и записывает в него...

25
28 / 29 / 0
Регистрация: 17.04.2009
Сообщений: 73
13.05.2009, 23:26 2
для начала ты совсем не открываешь файл
openDialog.Execute - это просто вызов окна диалога
Код
a:=inttostr(StringGrid1.RowCount) + ' ';
for j:=0 to StringGrid1.RowCount-1 do
for i:=0 to StringGrid1.ColCount-1 do
begin
a:=a+StringGrid1.Cells[i,j] + ' ';
end;
а где тут собственно связь с файлом? ты просто записываешьв строку подряд значения из грида?

Код
AssignFile(f1,SaveDialog1.FileName);
closefile(f1);
а это для чего? опять таки SaveDialog - диалоговое окно сохранения файла, в данном случае f1. И последние две строки это установка связи с файлом и его закрытие - т.е. нет не то что работы с файлом, а даже его открытия.

В общем давай так, ты поточнее изложи свою задачу, а то код ей вообще не соответствует, а я попытаюсь тогда помочь.
0
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
13.05.2009, 23:31  [ТС] 3
Цитата Сообщение от koma_grusha Посмотреть сообщение
для начала ты совсем не открываешь файл
openDialog.Execute - это просто вызов окна диалога

а где тут собственно связь с файлом? ты просто записываешьв строку подряд значения из грида?



а это для чего? опять таки SaveDialog - диалоговое окно сохранения файла, в данном случае f1. И последние две строки это установка связи с файлом и его закрытие - т.е. нет не то что работы с файлом, а даже его открытия.

В общем давай так, ты поточнее изложи свою задачу, а то код ей вообще не соответствует, а я попытаюсь тогда помочь.
Данные из стрингрида записываю в файл(любой), затем в любое время открываю файлы , инфа из которых опять записывается в стргрид. Нужно сделать через опендиалог
0
28 / 29 / 0
Регистрация: 17.04.2009
Сообщений: 73
14.05.2009, 00:32 4
хотела словами итегами написать, да че-то лень, скину сам образец, там комменты все есть, думаю что поймешь, где ошибка была. Насчет вывода в файл, можешь вывести посвоему - от этого суть не меняется
Files_StringGrid.rar
0
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
14.05.2009, 14:58  [ТС] 5
koma_grusha, вставил твой код сохранение работает, открытие нет
0
28 / 29 / 0
Регистрация: 17.04.2009
Сообщений: 73
14.05.2009, 21:06 6
что пишет? что именно с образца вставил? если можно приведи код открытия у тебя
проверь наличие обоих диалоговых компонента
0
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
14.05.2009, 22:51  [ТС] 7
Цитата Сообщение от koma_grusha Посмотреть сообщение
что пишет? что именно с образца вставил? если можно приведи код открытия у тебя
проверь наличие обоих диалоговых компонента
Вставил код полностью, ошибка во время открытия, прога откл.== вылазиет форма проекта и на ней че-то типа Aplication.run
0
28 / 29 / 0
Регистрация: 17.04.2009
Сообщений: 73
15.05.2009, 00:48 8
можешь образец или код скинуть? не видя не определишь
0
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.05.2009, 13:29 9
koma_grusha, исходник, извините меня - фигня, только запутывает человека...
Про комментарии я вообще молчу... Откуда скачан то он был? Даже нормально сохранить то не могут...
0
28 / 29 / 0
Регистрация: 17.04.2009
Сообщений: 73
15.05.2009, 18:17 10
Цитата Сообщение от Arriba Посмотреть сообщение
koma_grusha, исходник, извините меня - фигня, только запутывает человека...
Про комментарии я вообще молчу... Откуда скачан то он был? Даже нормально сохранить то не могут...
ну, начинается... всегда находится кто-то умнее всех, вставляет свои пять копеек и при этом сам автору ничем не помогает.
Но мне не трудно пояснить: данный исходник - это всего лишь черновик, показывающий один из примеров (я не сомневаюсь что у вас есть лучше) работы с диалоговыми окнами (посмотрите на код автора, ему нужно было хотя бы пример показать), а писать полноценную прогу для этого - извините фрилансом не занимаюсь
О комментариях - не молчите, скажите что вас не устроило, я не боюсь критики, что-то может даже возьму на заметку
О скачиваниях - засчитаю как за обиду
Про сохранение - автору было сказано (выше)что он может сохранить по-своему, так как я на эту тему не заморачивалась - опять же таки это черновик

А вообще-то могли и быть поделикатнее и не проявлять такую агрессию, ни мне, ни автору темы от этого ни холодно, ни жарко. Лучше подскажите ему свой вариант.
1
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.05.2009, 22:04 11
Вот мой отзыв на твой исходник, в следующий раз проверяй тщательнее, и со временем на эти мелочи внимания не будешь обращать, всё чётко будет:
Delphi
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
45
46
47
48
49
50
51
52
53
54
55
 var
 fmMain: TfmMain;
 implementation
 {$R *.dfm}
 //сохраняем грид в файл
 procedure TfmMain.btOpenClick(Sender: TObject);
 var
    Rows, Cols: Integer;
     i, j: Integer;
      f: TextFile;
      s: string;
  begin
      //вызываем окно диалога сохранения, пишем туда название файла и жмем сохранить
      if not OpenDialog.Execute then
        Exit;
    AssignFile(f, OpenDialog.FileName); //устанавливаем связь с файловой переменной и именем файла
      Reset(f);    //создаем файл
      Read(f, s);  //запоминаем количество столбцов
      Cols := StrToInt(s);
      Read(f, s);  //запоминаем количество столбцов
      Rows := StrToInt(s);
      for i := 0 to Cols - 1 do
          begin
            for j := 0 to Rows - 1 do
              begin
              Read(f, s);
              StringGrid.Cells[i,j] := s;
              end;
            Readln(f);
          end;
    CloseFile(f);
  end;
  procedure TfmMain.btSaveClick(Sender: TObject);
  var
    Rows, Cols: Integer;
      i, j: Integer;
      f: TextFile;
  begin
      Cols := StringGrid.ColCount;  //запоминаем количество столбцов
      Rows := StringGrid.RowCount;  //запоминаем количество строк
      //вызываем окно диалога сохранения, пишем туда название файла и жмем сохранить
      if not SaveDialog.Execute then
        Exit;
      AssignFile(f, SaveDialog.FileName); //устанавливаем связь с файловой переменной и именем файла
      Rewrite(f);      //создаем файл
      Write(f, IntToStr(Cols), ' ', IntToStr(Rows));
      writeln(f);
      for i := 0 to Cols - 1 do
          begin
          for j := 0 to Rows - 1 do
              Write(f, StringGrid.Cells[i,j], ' ');
          Writeln(f);
          end;
    CloseFile(f);
  end;
Ошибки и исправления комментарий:
5 Неправильный коментарий, если конечно не имелось ввиду название программы
13 Небыло открытия, ещё а уже сохранение Смотри название процедуры TfmMain.btOpenClick
17 Reset(f); грубая ошибка Reset(f)-открытие файла только для чтения, для создания и записи ReWrite(f);
18 Коментарий не на той строчке Нужно типо: считываем колличество столбцов
19 Тут как раз нужно //запоминаем количество столбцов
20 Тоже что и в 18 но нужно СТРОК
21 Коментарий //запоминаем количество строк
Для опытных--вместо 26 и 29 можно в 26 написать ReadLn(f,s);
Для опытных--вместо 46 и 47 можно в 46 написать WriteLn(f, IntToStr(Cols), ' ', IntToStr(Rows));
Для опытных--вместо 51 и 52 можно в 51 написать WriteLn(f, StringGrid.Cells[i,j], ' ');
[/CODE]
1
28 / 29 / 0
Регистрация: 17.04.2009
Сообщений: 73
15.05.2009, 22:21 12
вот теперь спасибо за конструктивную критику. Но снова распишу вкратце:
- неправильные комменты по невнимательности (сначала писала на сохранение, скопировала, переделала на открытие, а комменты не проверила, вернее не все);
- начсет 17 строки, а там итак идет открытие на чтение;
- насчет строк и столбцов просто в черновых вариантах, я каждую строку не расписываю, пишу общее на несколько строк в первой из них.
- насчет Readln, Writeln - в принципе знаю, но сократила просто
- насчет ошибок - спасибо, если честно не было времени проверить, возможно в этом заключается проблема автора (выше)

а теперь вы мне даже нравитесь, буду иметь вас ввиду, когда потребуется помощь но ПС: на будущее не стоит придираться к словам, особенно в комментах - главное смысл, а не четкая формулировка
0
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.05.2009, 22:36 13
Вот переделанный исходник но без коментов, лень писать было.
koma_grusha, посмотри тоже очень полезно будет, он намного проще чем ты думаешь...
А насчёт коментарий, они то как раз должны быть чёткими, не путать пользователя, и не нужно на каждой строчке...Это очень важно для понимания...
Обращайся, только я после 22 июня в армию уйду...Если что нуно лудше пиши в личное сообщение...
0
Вложения
Тип файла: zip Files_StringGrid.zip (11.1 Кб, 58 просмотров)
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
16.05.2009, 12:49  [ТС] 14
Arriba, сохранение работает, при открытии вылазиет:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program Project1;
 
uses
  Forms,
  Unit1 in '..\программа\Unit1.pas' {Form1},
  Unit2 in '..\программа\Unit2.pas' {Form2},
  Unit3 in '..\программа\Unit3.pas' {Form3};
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.Run;
0
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
16.05.2009, 18:01 15
Deemc, дорогой если ты правильно открыл мной переделанную программу, и правильно скопировал, то будет всё работать, выкладывай полный исходник твоей, что ты там наделал и накопировал, лудше в архивевсе файлы, потому что у тебя левые данные проглядываются судя по тому что ты написал...
0
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
18.05.2009, 22:57  [ТС] 16
Arriba, не пойму что требует, выдает ошибку, посмотри, может подскажешь
0
Миниатюры
OpenDialog: открыть текстовый файл и записать его в StringGrid  
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
18.05.2009, 23:13 17
Цитата Сообщение от Deemc Посмотреть сообщение
Arriba, не пойму что требует, выдает ошибку, посмотри, может подскажешь
Всё очень легко, "is not a valid integer value"--это ошибка для stringgrida очень распространена, это значит что ты хочешь внести данные в stringgrid в несуществующую ячейку.

т.е. смотри: у тебя StringGrid имеет размерность 5х5(5 строк и 5 столбцов) а ты допустим записываешь данные в (6 строчку и первый столбик)-а нету такого размерность 5х5.

Я думаю у тебя ошибка в том, что когда ты положил StringGrid на форму ты не учёл фоксированные ячейки(такие коричневые) измени FixedRows и FixedCols в значение 0.

И учти что нумерация строк и столбов в StringGrid'e начинаются с НУЛЯ (0).
0
0 / 0 / 0
Регистрация: 02.10.2009
Сообщений: 3
02.10.2009, 23:31 18
Всем доброго времени суток. Столкнулся с такой же проблемой, при открытии сохраненного файла и попытке загрузки в стринггрид выдает "is not a valid integer value". Пробовал убирать фиксированые строки, увеличивать число столбцов и строк - не помогает. Подскажите плиз что делать?

Заранее благодарен!
0
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
03.10.2009, 01:43 19
Митя, А ты точно записываешь данные в формате String или другом строковом...???
Давай код или исходник лудше на сайтик и я погляжу, сто процентов ерундовая ошибка какая нить...И быстро решим этот вопрос...
0
0 / 0 / 0
Регистрация: 02.10.2009
Сообщений: 3
03.10.2009, 13:34 20
Вот исходник.
Пробовал два различных варианта, во втором при загрузке выдает Error 104.
0
Вложения
Тип файла: rar Save SG.rar (190.6 Кб, 19 просмотров)
Тип файла: rar Сохранение и загрузка по фиксированному одресу.rar (192.7 Кб, 23 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2009, 13:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Открыть существующий текстовый файл и копировать его в новый файл, с заменой всех букв нижнего регистра
напишите программу, которая бы открывала существующий текстовый файл и копировала его в новый файл,...

Дан исходный текстовый файл. Записать его строки в выходной файл в перевёрнутом виде
грозят отчислением, нужно решить

Открыть текстовый файл и вывести на экран его содержимое
Здравствуйте, хотел спросить, что нужно прописать, чтобы открыть текстовый файл и вывести на экран...

Записать в текстовый файл. Прочитать его
С помощью датчика случайных чисел сформировать матрицу (NxM). Значения N и M ввести с клавиатуры....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.