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

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


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 342
от 07.06.2004, 08:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1603
Отправлено ответов: 3725
Активность: 232.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

sir henry
Статус: Профессиональный
Общий рейтинг: 163.1
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 163.4
URL: Программирование на Паскале
[Подробней >>]
THE_PRO
Статус: Профессиональный
Общий рейтинг: 134.39
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
 
CrackLab
Статус: Опытный
Общий рейтинг: 139.2
[Подробней >>]
samum2000
Статус: Профессиональный
Общий рейтинг: 129.98
URL: Samums home page
[Подробней >>]
Snowm@n
Статус: Опытный
Общий рейтинг: 111.85
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1592. В дополнение к вопросу №1584 Ну, в принципе, да. Только дело в том, что моя программя является тольк... (ответов: 1)
Вопрос № 1593. В дополнение к вопросу №1586 Странное дело, но при использовании вместо Sleep() Sleep(0) нагрузка на... (ответов: 1)
Вопрос № 1594. Здравствуйте эксперты. Столкнулся с проблемой в Delphi: нужно увеличить размер динамического массив... (ответов: 6)
Вопрос № 1595. У меня такая проблема. Пишу код: procedure TEditr.N11Click(Sender: TObject); var BlSt : TADOBlobStre... (ответов: 2)
Вопрос № 1596. Сохраняю в базу большой рисунок. База была 1Мб, стала 3 Мб. Удаляю этот рисунок, но база все-равно о... (ответов: 2)
Вопрос № 1597. В Delphi7 после компиляции она мне выдаёт "IO Error 32 progect stopped, use step or run to cont... (ответов: 2)
Вопрос № 1598. Вопрос : 1) Ситуация такая : справочник товаров создан изначально как FreNabor: TFrame, На форму спр... (ответов: 1)

Вопросов: 7, ответов: 15


 Вопрос № 1592

В дополнение к вопросу №1584
Ну, в принципе, да.
Только дело в том, что моя программя является только доолнением к основной. Основная создает файлы, выставляет файл-флаг, потом запускает мою программу и ждет, пока моя программа выполнит архивацию и резервное копирование. После этого (моя программа тоже ставить флаг-файл) продолжает работать основная программа. После окончания ее работы (тут основная программа удаляет свой флаг) моя копирует в каталог для исходящих файлов то, что получилось. Так что все правильно.



Вопрос отправлен: 02.06.2004, 10:19
Отправитель: Alexandr

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Доброе время суток, Alexandr!
Я понял.
А может быть сделать так, чтобы запускалась сначала Ваша программа, которая делает архивацию и копирование, а потом основная?
Вот примерная схема работы:
1. Старт Вашей программы.
2. Из нее запускается основная программа и делает свое дело. Ствит флаг.
3. Ваша программа в свою очередь проводит архивацию и копирование. Ставит флаг.
4. Основная программа доделывает то что не доделала. Удаляет флаг.
5. Ваша программа копирует ее доделки. Удаляет свой флаг.
--------
Ваша программа, с помощью таймера, проверяет каждые, например, 2 секунды наличие флага от основной программы. Период проверки можно выставить замерив время работы основной программы.
--------
Еще, я бы Вам посоветовал вместо двух программ со сложным взаимодействием (тем более что они, если я не ошибаюсь, выполняют две части одной задачи), написать одну программу с правильно выстроеной логикой работы :). Впрочем, я могу и ошибаться, не зная сути работы основной программы :).

Ответ отправлен: 04.06.2004, 12:47
Отправитель: sir henry


 Вопрос № 1593

В дополнение к вопросу №1586
Странное дело, но при использовании вместо Sleep() Sleep(0) нагрузка на процессор хот и осталась на прежнем уровне (хотя нет, понизилась до 99 - 93%), но другие приложения перестали тормозить.
Спасибо.



Вопрос отправлен: 02.06.2004, 10:13
Отправитель: Alexandr

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Приветствую Вас, Alexandr!
Вот-вот и я искал, как реализована эта функция, но в описании ПРОЦЕССОРА нашел, то что написал :))
Вернее, там рекомендуется приостанавливать поток (!!!) и Sleep(0) - отдавать время процессора. Но не успел найти, как в kernel32.dll - реализована Sleep


Ответ отправлен: 02.06.2004, 11:36
Отправитель: Boriss


 Вопрос № 1594

Здравствуйте эксперты.
Столкнулся с проблемой в Delphi: нужно увеличить размер динамического массива (a: array of integer) на N единиц. По этому поводу 2 вопроса:
1.Как определить размер динамического массива ?
2.Как увеличить размер этого массива на N единиц?
Спасибо всем за ответы.



Вопрос отправлен: 02.06.2004, 12:00
Отправитель: Licha

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, Licha!
1. Размер массива возвращает функция Length(Имя_массива),
2. Изменяет размер динамического массива функция SetLength(Имя_массива, Новый_размер).

Ответ отправлен: 03.06.2004, 06:54
Отправитель: sir henry


Отвечает THE_PRO

Добрый день, Licha!
ispolzuy SetLength
napr SetLength(DynArray,n);
Pri etom yesli n menshe chem razmer DynArray to massiv usekayetsya v protivnom sluchaye noviye elementi dobaylyayutsya v konets massiva i initsializiruyutsya nulyami.

Ответ отправлен: 02.06.2004, 12:31
Отправитель: THE_PRO


Отвечает Boriss

Приветствую Вас, Licha!
var da: array of integer;
...
SetLength(da, 10);
....
SetLength(da, length(da)+10));
...
Finalize(da);
High - наибольшее значение индекса
Low - наименьшее значение индекса (всегда 0)
Если массив имеет нулевую длину, то High вернет -1

Ответ отправлен: 02.06.2004, 12:42
Отправитель: Boriss


Отвечает CrackLab

Здравствуйте, Licha!
1) Используйте функцию Length
2) Используйте функцию SetLength

Ответ отправлен: 02.06.2004, 16:23
Отправитель: CrackLab


Отвечает samum2000


Здравствуйте, Licha!
1. Функция length
2. SetLength(<массив>, length(<массив>)+n);
--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 02.06.2004, 20:19
Отправитель: samum2000


Отвечает Snowm@n

Добрый день, Licha!
Динамическими массивами здесь не обойдешься. Используй связные списки.

Ответ отправлен: 02.06.2004, 20:30
Отправитель: Snowm@n


 Вопрос № 1595

У меня такая проблема. Пишу код:
procedure TEditr.N11Click(Sender: TObject);
var BlSt : TADOBlobStream;
begin
if not OpenPictureDialog2.Execute then exit;
OleContainer1.CreateObjectFromFile(OpenPictureDialog2.FileName,False);
With ADOTable1 do
begin
Edit;
BlSt:=TADOBlobStream.Create(ADOTable1Risunok,bmReadWrite);
OLEContainer1.SaveToStream(BlSt as TStream);
BlSt.Free;
Post;
end;
end;
При запуске сохраняю в базу данных большой рисунок (более 2 МБ).
Закрываю базу. При новом открытии базы выдаёт ошибку (что-то с Ole).
При изменении кода:
procedure TEditr.N11Click(Sender: TObject);
var BlSt : TADOBlobStream;
begin
OleContainer1.CreateObjectFromFile(\'D:РИСУНКИОткрыткиВил.bmp\', False);
With ADOTable1 do
begin
Edit;
BlSt:=TADOBlobStream.Create(ADOTable1Risunok,bmReadWrite);
OLEContainer1.SaveToStream(BlSt as TStream);
BlSt.Free;
Post;
end;
end;
Работает всё нормально. Подскажите, пожалуйста, почему?.



Вопрос отправлен: 02.06.2004, 13:26
Отправитель: Vovac

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, Vovac!
Было бы неплохо привести текст сообщения об ошибке дословно.
Похоже на то, что у Вас в базу записывается не большой рисунок :), а что-то другое.
База какого типа? Как Вы записываете рисунок в базу? Могут быть нюансы записи именно рисунков в Акцессе и в Парадоксе.

Ответ отправлен: 03.06.2004, 07:38
Отправитель: sir henry


Отвечает Boriss

Здравствуйте, Vovac!
Хорошо звучит последняя фраза: "все работает. Почему?"
Причина явно в OpenPictureDialog2.FileName, коя есть String, а нужно PChar - попробуйте преобразовать PChar(...).
Да и то, что что-то неплохо бы посмотреть :))


Ответ отправлен: 02.06.2004, 16:18
Отправитель: Boriss


 Вопрос № 1596

Сохраняю в базу большой рисунок. База была 1Мб, стала 3 Мб.
Удаляю этот рисунок, но база все-равно осталась 3Мб.
Как очистить базу от удалённых данных?. (Работаю с ADO)
Спасибо.



Вопрос отправлен: 02.06.2004, 13:28
Отправитель: Vovac

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Приветствую Вас, Vovac!
Дело тут совершено не в ADO. У Вас остается пустое пространство от рисунка, пэтому таблицу, где хранился ресунок, надо упаковать. Как - зависит от формата базы данных.

Ответ отправлен: 03.06.2004, 08:05
Отправитель: sir henry


Отвечает Boriss

Доброе время суток, Vovac!
Конечно, первый вопрос: "А как удаляете?"
Второй, проверяете ли, что удалили?

Ответ отправлен: 02.06.2004, 16:14
Отправитель: Boriss


 Вопрос № 1597

В Delphi7 после компиляции она мне выдаёт "IO Error 32 progect stopped, use step or run to continue".
Что такое "IO Error 32".



Вопрос отправлен: 03.06.2004, 12:53
Отправитель: Лёха

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Здравствуйте, Лёха!
Ну, Леха! Почему бы и не описать, что делаете?
Но я буду добрее, чем Вы заслуживаете своей лаконичностью.
32-я ошибка может появиться при обращении к файлу, доступ к которому закрыт. Может и еще когда, но лень искать - раз Вам лень описать ситуацию

Ответ отправлен: 03.06.2004, 14:39
Отправитель: Boriss


Отвечает sir henry

Здравствуйте, Лёха!
IO Error - это ошибка ввода-вывода. А уж что Вы там вводите-выводите будет ясно только после знакомства с Вашей программой :)).

Ответ отправлен: 04.06.2004, 13:22
Отправитель: sir henry


 Вопрос № 1598

Вопрос :
1) Ситуация такая : справочник товаров создан изначально как FreNabor: TFrame, На форму справочника кидаю FreNabor - все нормально, затем работаю, тоже путем, но через определенный промежуток времен (всегда по-разному) при открытии справочника в виде формы(at design time) он выдает ошибку : Access violatin at address 007EFD98 in module VCL70.BPL Ignore the error & contunie ? После чего форма вообще не открывается, хотя начинаю комплить, даже с такой формой все компилится. Большую часть кода, не считая мелочей при открытии я спрятал в Frame справочника, дабы по-быстрому решать проблему, но эта проблема с кажным днем все чаще и чаще. Может это из-за того что я на фрейм много чего переложил, правда я боюсь выкладывать код на форме, т.к. потом трудно все восстанавливать. Сильно ли зависит спользование ОЗУ программа , если использует сложные фреймы ? Помогите.



Вопрос отправлен: 03.06.2004, 16:19
Отправитель: jiny (zhas-trz@tarazinfo.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, jiny!
Кроме ОЗУ у Виндов еще и своп есть. Если памяти не хватает, можно своп использовать. Однако здесь дело не в памяти, bpl - это пакеты Дельфи, с помощью которых можно уменьшить размер программ. Или этот пакет поврежден или вирус :). А как у Вас проги компилируются? С использованием пакетов или без?

Ответ отправлен: 04.06.2004, 15:34
Отправитель: sir henry



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (22)
C / C++ (14)
Builder / Delphi (15)
Pascal (20)
Basic / VBA (4)
Java / JavaScript (5)
PHP (13)
Криптография (8)
WinAPI (10)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (53)
"Железо" (32)
Поиск информации (17)
Администратору
Windows NT/2000/XP (24)
Linux / Unix (9)
Юристу
Гражданское право (12)
Семейное право (9)
Трудовое право (12)
КоАП (8)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное