Вопрос № 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, что не зная, что в ней "зашито", воспользоваться функционалом невозможно. Даже если знать названия функций и процедур, но не знать параметров, ничего не получится (разве что наугад). Поэтому нужно искать документацию к библиотеке, либо связываться с её автором.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Есть в со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.
--------- Не узнаешь - не попробуешь.