Вопрос № 178176: Уважаемые эксперты. Помогите в написании программы. Delphi 7. Программа: http://rfpro.ru/upload/2261 Данные из StringGrid1 должны сохраняться в файле типа *.dat (StringGrid.dat). ...
Вопрос № 178176:
Уважаемые эксперты. Помогите в написании программы. Delphi 7. Программа: http://rfpro.ru/upload/2261 Данные из StringGrid1 должны сохраняться в файле типа *.dat (StringGrid.dat).
Отвечает Akahaos, 1-й класс :
Здравствуйте, Спиридонов Данил Сергеевич.
Приложение:
Ответ отправил: Akahaos, 1-й класс
Ответ отправлен: 03.05.2010, 09:26
Номер ответа: 261172
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 261172
на номер 1151 (Россия) |
Еще номера »
Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Спиридонов Данил Сергеевич. Предлагаю свой вариант решения задачи: 1. Сохранение в файл
Код:
procedure TForm1.N3Click(Sender: TObject); // Процедура сохранения сетки в файл var i, j: word; begin i:= 1; while StringGrid1.Cells[0, i] <> ''
do begin // Запись данных о сотрудниках в массив Setlength(mas, i); mas[i - 1].Familiya:= StringGrid1.Cells[0, i]; mas[i - 1].zarplata:= StrToFloat(StringGrid1.Cells[1, i]); inc(i); end; dec(i, 2); n:= i + 1; AssignFile(FileData, 'stringdrid.dat'); // Связали файловую переменную с файлом Rewrite(FileData); // Открыли файл для перезаписи for j:= 0 to i do Write(FileData,
mas[j]); // Записали данные в файл CloseFile(FileData); // Закрыли файл end;
2. Чтение из файла
Код:
procedure TForm1.N4Click(Sender: TObject); // Процедура чтения сетки из файла var i: integer; begin i:= 0; If not FileExists('stringdrid.dat')
then // Проверяем существует или нет файл begin StatusBar1.Panels[1].Text:= 'Файла ' + ExtractFilePath(ParamStr(0)) + 'stringdrid.dat' + ' не существует'; // Выводим путь до файла exit; end; AssignFile(FileData, 'stringdrid.dat'); // Связали файловую переменную с файлом Reset(FileData); // Встали на начало файла while not eof(FileData) do begin // Делаем пока не дойдём
до конца файла inc(i); SetLength(mas, i); // Устанавливаем новый размер массива Read(FileData, mas[i - 1]); // Читаем данные из файла в массив end; CloseFile(FileData); // Закрыли файл n:= i; StringGriD1.Font.Color:= clGreen; // Сделали цвет шрифта сетки зелённым for i:= 0 to n - 1 do begin // Заполняем сетку данными StringGrid1.Cells[0, i + 1]:= mas[i].Familiya; StringGrid1.Cells[1, i + 1]:= FloatToStr(mas[i].Zarplata);
end; StatusBar1.Panels[0].Text:= 'n = ' + IntToStr(n); // Выводим информацию количестве записей в сетке StatusBar1.Panels[1].Text:= ExtractFilePath(ParamStr(0)) + 'stringdrid.dat'; // Выводим путь до файла end;
3. Немного переделал объявление записи сотрудник
Код:
type sotrudnik = record Familiya: string[30]; Zarplata: real; end; massiv = array of sotrudnik; fl = File Of sotrudnik;
private { Private declarations } public { Public declarations } end; var FileData: fl; mas: massiv; n: word; Form1: TForm1;
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.