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

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


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

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

Выпуск № 843
от 19.06.2007, 13:35

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


Вопрос № 91268: Подскажите, как изменить тип графика программно? Например, я использую Line, а мне нужно Pie...
Вопрос № 91273: Здравствуйте, господа Эксперты! У меня такой вопросик... Можно ли получить список всех функций (имена, параметры, тип возвращаемого значения), экспортируемых конкретной DLL-библиотекой ? Буду рад любоф помощи, советам, ссылкам! Заранее СП...
Вопрос № 91280: Здравствуйте уважаемые эксперты!Мне в приложении понадобилось копировать файлы.В Delphi Word нашёл "Копирование методом LZExpand" и вот такой код: uses LZExpand; ...... procedure CopyFile(Source, Dest: string); var ...

Вопрос № 91.268
Подскажите, как изменить тип графика программно? Например, я использую Line, а мне нужно Pie
Отправлен: 13.06.2007, 17:32
Вопрос задал: Korvinua (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Gh0stik
Здравствуйте, Korvinua!

Судя по вопросу Вы используете компонент TChart.

Вам достаточно ввести глобальную переменную типа TChartSeries
которая будет указывать на серии различных типов, а затем при изменении соответствующих объектов нужно написать обработчик вида:

TmpSeries.Free; {удаляем серию из памяти}
TmpSeries:=TPointSeries.Create(Chart1); {создаем объект новой серии того или иного класса}
TmpSeries.ParentChart:=Chart1; {включаем серию в список серий компонента}
TmpSeries.DataSource:=Series1; {связываем данные созданной серии с данными базовой серии}


Вот пример на основе компонента ComboBox:
var TmpSeries:TChartSeries;
....
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: begin
TmpSeries.Free;
TmpSeries:=TPointSeries.Create(Chart1);
TmpSeries.ParentChart:=Chart1;
TmpSeries.DataSource:=Series1;
end;
1: begin
TmpSeries.Free;
TmpSeries:=TBarSeries.Create(Chart1);
TmpSeries.ParentChart:=Chart1;
TmpSeries.DataSource:=Series1;
end;
2: begin
TmpSeries.Free;
TmpSeries:=TPieSeries.Create(Chart1);
TmpSeries.ParentChart:=Chart1;
TmpSeries.DataSource:=Series1;
end;
3: begin
TmpSeries.Free;
TmpSeries:=TLineSeries.Create(Chart1);
TmpSeries.ParentChart:=Chart1;
TmpSeries.DataSource:=Series1;
end;
end;
end;
....


Также прикрепляю исходник рабочего проекта.

Good Luck!!!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 13.06.2007, 19:18

Отвечает: Кэр Лаэда
Здравствуйте, Korvinua!
в дополнение к ответу Gh0stik скажу что в Delphi (во всяком случае в 7) есть хорошая демка для Tchart лежет вот тут
в ней разобрано все.. или почти все что можно сделать со стандартным TChart
C:Program FilesBorlandDelphi7DemosTeeChart
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 14.06.2007, 15:47


Вопрос № 91.273
Здравствуйте, господа Эксперты!
У меня такой вопросик... Можно ли получить список всех функций (имена, параметры, тип возвращаемого значения), экспортируемых конкретной DLL-библиотекой ?
Буду рад любоф помощи, советам, ссылкам!
Заранее СПАСИБО!
Отправлен: 13.06.2007, 17:58
Вопрос задал: Andrewprog (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин А.А.
Здравствуйте, Andrewprog!
Нет. В этом и состоит особенность DLL, что не зная, что в ней "зашито", воспользоваться функционалом невозможно. Даже если знать названия функций и процедур, но не знать параметров, ничего не получится (разве что наугад). Поэтому нужно искать документацию к библиотеке, либо связываться с её автором.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин А.А. (статус: Академик)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 13.06.2007, 18:02

Отвечает: Louken
Здравствуйте, Andrewprog!

Есть в соcтаве Delphi программа TDUMP.EXE (C: Program Files Borland Delphi7 Bin TDUMP.EXE), она позволяет узнать имена всех доступных методов, ну и еще дает некоторую информацию о Dll.
Для того чтобы ее использовать:
1. Создайте сначала новую папку;
2. Скопируйте в нее файл TDUMP.EXE и вашу DLL;
3. Потом нужно создать bat файл в этой папке (1.bat), в котором написать такую строчку:
TDUMP.EXE Main.dll Main.txt
В которой TDUMP.EXE - собственно имя чюдо-программы, Main.dll - имя вашей DLL, а Main.txt - имя текстового файла в который заноситься вся информация.
Конечно копировать все в одну папку не обязательно, можно написать вместо имен, абсолютный или относительный пути.
4. Дальше просто запустите файл 1.bat на исполнение, двойным щелчком по нему.

Удачи в работе.
Ответ отправил: Louken (статус: 7-ой класс)
Ответ отправлен: 13.06.2007, 18:56


Вопрос № 91.280
Здравствуйте уважаемые эксперты!Мне в приложении понадобилось копировать файлы.В Delphi Word нашёл "Копирование методом LZExpand" и вот такой код:

uses LZExpand;
......
procedure CopyFile(Source, Dest: string);
var
SrcFile: Integer;
DestFile: Integer;
S: string;
RetCode: Longint;
OpenFileBuf: TOFStruct;
FName: array[0..255] of Char;
begin
StrPCopy(FName, Source);
SrcFile := LZOpenFile(FName, OpenFileBuf, of_Read);
StrPCopy(FName, Dest);
DestFile := LZOpenFile(FName, OpenFileBuf, of_Create);
RetCode := LZCopy(SrcFile, DestFile);
if RetCode >= 0 then
begin
LZClose(SrcFile);
LZClose(DestFile);
end
else
begin
Str(RetCode, S);
MessageDlg('Не могу скопировать ' + Source + ' в ' +
Dest + #13 + 'Код ошибки = ' + S, mtError, [mbOk], 0);
end;
end;

некоторые места в этом коде мне не совсем понятны.Например что за тип данных:OpenFileBuf: TOFStruct; и далее
SrcFile := LZOpenFile(FName, OpenFileBuf, of_Read);
...
RetCode := LZCopy(SrcFile, DestFile);
...
LZClose(SrcFile);

Можно ли более подробнее объяснить суть этого метода , весь код и самое главное что значит ошибка в нём с кодом -2.

Отправлен: 13.06.2007, 19:03
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Савенко Вадим Иванович
Здравствуйте, GAZOT!
коды ошибок файлового ввода-вывода:
2- файл не найден
3- неправильное имя файла
4- слишком много открытых файлов
5- файл недоступен
100- достигнут конец файла
101- диск переполнен
106- ошибка ввода

Суть примерно в следующем:
файл SrcFile открывается для чтения, файл DestFile создается, происходит копирование, анализируется возвращаемое значение (RetCode) и или файлы закрываются, или выводится сообщение об ошибке. Более подробно смотрите в help-e.
Ответ отправил: Савенко Вадим Иванович (статус: Студент)
Ответ отправлен: 13.06.2007, 20:05
Оценка за ответ: 3
Комментарий оценки:
я считаю и на половину вопроса не получил ответа

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, GAZOT!
По сути эта процедура &mdah; wrapper или "обертка", как их называют. Все, что она делает, это немного преобразовывает данные, а именно имя файла в HANDLE — некий уникальный идентификатор, с которым работает ОС.
Что такое TOFStruct я вам не скажу потому, что у меня под рукой сейчас нет Delphi. Наводите на него мышкой, зажимаете Ctrl и кликаете. Вас переносит в исходник LZExpand, как раз в то место, где описывается структура.
Возможно, TOFStruct — это сокращение от Open File Structure, но, опять же, исходники у вас.
Вообще, LZ не что иное как инициалы создателей алгоритма сжатия, лежащего в основе метода архивации, используемого для файлов с расширением zip. А точнее, для разархивирования.
Короче, у меня ощущение, что это процедура предназначена для копировнаия файлов из zip-архивов, а у вас обычные файлы. Вот оно и не работает.
Так что используйте просто CopyFile.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 14.06.2007, 15:41


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное