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

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


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 579
от 01.09.2006, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 369, Экспертов: 58
В номере:Вопросов: 3, Ответов: 6


Вопрос № 53334: Привет всем!!! У меня проблемка я только начинаю в Delphi Нужно очень быстро написать прогу конвертор данных Данные в 16 ричном файле каждый байт отвечает за конкретные данные Формат данных примерно такой 1блок (размер 1байт)...
Вопрос № 53345: R1, R2: HRgn; что за тип переменных?...
Вопрос № 53354: Сдраствуйте уважаемые эксперты. У меня есть один вопрос. Я делаю тест. Есть таблица вопросов(База Access)/ Как можно рамдомно выбирать запись без повторений? Заранеее блогодарен....

Вопрос № 53.334
Привет всем!!!

У меня проблемка я только начинаю в Delphi
Нужно очень быстро написать прогу конвертор данных
Данные в 16 ричном файле каждый байт отвечает за конкретные данные
Формат данных примерно такой
1блок (размер 1байт) день
2блок (2байта) кол-во людей 1 отдел
3блок (2байта) кол-во покупок 1 отдел
4блок (2байта) кол-во людей 2 отдел
5блок (2байта) кол-во покупок 2 отдел
Всего 13 отделов
Следующий блок 16 байт бонус

Файл имеет накопительную суточную структуру 69 байт 1 + 52 + 16

Т.е дальше снова день и т.д. на целый месяц

Все это нужно забить в базу … как сделать не подскажете?
Отправлен: 26.08.2006, 13:10
Вопрос задал: Domex (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Domex!
Создайте структуру, которая структуре данных за один день. К сожалению, я не совсем понял Ваше описание, поэтому приведу пример по тому, что понял:
Type
OneDay = record
Day: byte;
otdel1: Word;
otdel2: Word;
...
otdel13: Word;
bonus: array[0..15] of byte;
End;
Я не понял, что "за накопительная суточная структура", но если она тоже включается в данные за день, то ее нужно включить в структуру.
Далее, Вы открываете файл, как файловый поток (TFileStream) и с помощью метода Read() в цикле читаете поблочно информацию оттуда с помощью переменной этой структуры и заносите в таблицу базы данных.
Т.е. все довольно просто.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 26.08.2006, 14:05


Вопрос № 53.345
R1, R2: HRgn;

что за тип переменных?
Отправлен: 26.08.2006, 15:24
Вопрос задал: Gwest (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Савенко Вадим Иванович
Здравствуйте, Gwest!
Это дескриптор региона, используется при создании окон непрямоугольной
формы. Регион - это часть окна, воспринимаемая именно как окно.
Ответ отправил: Савенко Вадим Иванович (статус: 9-ый класс)
Ответ отправлен: 26.08.2006, 15:50

Отвечает: Mexes
Здравствуйте, Gwest!
Дескриптор региона. См. мой ответ на вопрос 53189 (http://rusfaq.ru/info/Question/53189) или обзор работы с регионами (http://club.shelek.com/print.php?id=98).
Не знаю, стоит ли объяснять, что такое дескриптор, в общем, идентификатор объекта операционной системы.
Ответ отправил: Mexes (статус: 2-ой класс)
Ответ отправлен: 26.08.2006, 16:24


Вопрос № 53.354
Сдраствуйте уважаемые эксперты. У меня есть один вопрос. Я делаю тест. Есть таблица вопросов(База Access)/ Как можно рамдомно выбирать запись без повторений? Заранеее блогодарен.
Отправлен: 26.08.2006, 17:17
Вопрос задал: Болотов Алексей Борисович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Томша Павел
Здравствуйте, Болотов Алексей Борисович!
Делаете базу уже полученных рандомных чисел (если для приложения без перезапуска, то Set of Word, а если с перезапуском, то File) и сравниваете новое рандомное число с уже полученныит ранее(н-р в приложении)

Приложение:

Ответ отправил: Томша Павел (статус: 1-ый класс)
Ответ отправлен: 26.08.2006, 17:52

Отвечает: sir henry
Здравствуйте, Болотов Алексей Борисович!
Заведите в той-же базе таблицу уже сгенерированых номеров вопросов и после рандома, но перед поиском самого вопроса, поискать в этой табличке номер. если номера нет, значит это очередной вопрос теста, заносим номер в табличку и предъявляем вопрос, если есть, то генерируем номер, пока не попадется свободный.
Randomize
{Генерируем номер до тех пор, пока не найдем отсутствующий}
Repeat
Nomer:=Random(Общее_количество_вопросов);
Until not ТаблицаСгенерированыхНомеров.Locate('Номера', Nomer, []);
{Добавляем сгенерированый номер, чтобы потом он опять не генерировался}
ТаблицаСгенерированыхНомеров.AppendRecord(Nomer);
{Фиксируем изменение в таблице}
ТаблицаСгенерированыхНомеров.Post;
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 26.08.2006, 18:21
Оценка за ответ: 5

Отвечает: Morgen_krsk
Здравствуйте, Алексей Борисович!
Зависит от обстоятельств. Если число вибираемых вопросов очень мало, то лучше пользоваться одной из методик предложенных выше. В противном случае, лучше выбрать другой ...
var
Asks : array [0...1000] of Integer;
Ask_Count : Integer;
... // инициализируем массив
Ask_Count := 100;
for i := 0 to Ask_Count-1 do Asks[i] := i;
.. // последовательно выбираем новые элементы
repeat
j := random(Ask_Count);
NextAsk := Asks[j];
for i := j+1 to Ask_Count-1 do Ask[i-1] := Ask[i];
dec(Ask_Count);
until Ask_Count < ...;
Ответ отправил: Morgen_krsk (статус: 2-ой класс)
Ответ отправлен: 27.08.2006, 06:18


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

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное