Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный хостинг на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 1892
∙ повысить рейтинг »
star9491
Статус: Практикант
Рейтинг: 1477
∙ повысить рейтинг »
Евгений/Genia007/
Статус: Бакалавр
Рейтинг: 787
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Delphi и Lazarus

Номер выпуска:1511
Дата выхода:01.04.2010, 15:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:555 / 234
Вопросов / ответов:1 / 1

Вопрос № 177486: Здравствуйте уважаемые эксперты. Помогите в решении задачи. Условие задачи. Заданы сведения о сотрудниках некоторой организации. Формат сведений: Фамилия, заработная плата. Количество сведений любое. Сохранить сведения в памяти и файле. Прочитать...



Вопрос № 177486:

Здравствуйте уважаемые эксперты. Помогите в решении задачи.
Условие задачи. Заданы сведения о сотрудниках некоторой организации. Формат сведений: Фамилия, заработная плата. Количество сведений любое. Сохранить сведения в памяти и файле. Прочитать из файла по запросу и определить среднюю заработную плату всех сотрудников организации. Предусмотреть дополнение сведений и их исправление.
Вид программы.

Нужно написать:
1. Процедуру сохранения сведений в файле.
2. Процедуру Обработки сведений.
Открыть файл и загрузить с изменением цвета шрифта. Вывести сообщение при отсуствии файла.
Используя функцию вычисления средней зарплаты вычислить среднюю зарплату. Фамилии вывести в Memo1 с упорядочиванием по алфавиту.
Результат программы.

Отправлен: 27.03.2010, 14:12
Вопрос задал: Спиридонов Данил Сергеевич, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Спиридонов Данил Сергеевич.
Вот добавленная процедура сохранения данных в файл:
Код:
procedure TForm1.N7Click(Sender: TObject);
var
i, j, y: word;
f: TextFile;
begin
y:= 0;
AssignFile(f, 'stringdrid.txt'); // Связали переменную с файлом
Rewrite(f); // Открыли файл для перезаписи
with StringGrid1 do // Делаем для сетки
begin
for i:= 0 to RowCount - 1 do
if Cells[0, i] <> '' then
inc(y); // Считаем сколько занято ячеек в сетке
// Записываем номер колонки и строки
Writeln(f, ColCount);
Writeln(f, y);
// Записываем содержимое ячейки
for i:= 0 to ColCount - 1 do
for j:= 0 to y - 1 do< br> Writeln(F, Cells[i, j]);
end;
CloseFile(F); // Закрыли файл
end;
Процедура загрузки данных из файла:
Код:
procedure TForm1.N2Click(Sender: TObject);
var
f: TextFile;
x, i, j: Integer;
str: String;
begin
StringGriD1.Font.Color:= clGreen; // Делаем шрифт сетки зелённым
{If not OpenDialog1.Execute then
exit; }
if not Fileexists('stringdrid.txt') then
begin // Выводим сообщение при отсутствии файла
ShowMessage('Файла не существует.');
exit;
end;
AssignFile(f, {OpenDialog1.FileName}'stringdrid.txt'); // Связали переменную с файлом
Reset(f); // Открыли файл на чтение
with StringGrid1 do // Делаем для сетки
begin
// Получаем номер колонки
Readln(f, x);
ColCount:= x;
// Получаем номер строки
Readln(f, x);
RowCount:= x;
// Загружаем сетку
for i:= 0 to ColCount - 1 do
for j:= 0 to RowCount - 1 do
begin
Readln(f, str);
Cells[i, j]:= str;
end;
end;
CloseFile(f); // Закрыли файл
StatusBar1.Panels[0].Text:= 'n = ' + IntToStr(StringGrid1.RowCount - 1); // Выдаём на статус бар количество записей в сетке
StatusBar1.Panels[1].Text:= ExtractFilePath(ParamStr(0)) + 'stringdrid.txt'; // Выдаём на статус бар полный путь к файлу
end;
Изменённая процедура расчёта и вывода средней зарплаты:
Код:
procedure TForm1.N6Click(Sender: TObject);
var
i: integer;
k: real;
list: TStringList;
begin
i:=1;
setlength(mas,1);
while StringGrid1.Cells[0,i]<>'' do
begin
mas[i-1].Familiya:= stringgrid1.Cells[0,i];
mas[i-1].Zarplata:= StrToInt(StringGrid1.Cells[1,i]);
i:= i + 1;
setlength(mas, i);
end;
n:= i - 1;
k:= count(mas);
Edit1.Text:= FloattostrF(k, ffFixed, 8, 2);
Memo1.Clear; // Отчистили memo
List:= TStringList.Create; // Создали список
for i:= 1 to StringGrid1.RowCount do
if StringGrid1.Cells[0, i] <> '' then
List.Add(StringGrid1.Cells[0, i]); // Загружаем в список данные
List.Sort; // Сортируем список
Memo1.Lines.AddStrings(List); // Добавили данние в memo
List.Free; // Освободили список

end;

Весь проект.
-----
Помогли тебе, помоги и ты.

Ответ отправил: Евгений/Genia007/, Бакалавр
Ответ отправлен: 30.03.2010, 11:27
Номер ответа: 260465

Оценка ответа: 5
Комментарий к оценке:
Спасибо за грамотный ответ.

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260465 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное