Виртуальная библиотека Delphi - [10]

Шрифт
Интервал

NO_ERROR — Нет ошибок — успешное завершение

ERROR_ACCESS_DENIED — Ошибка доступа

ERROR_ALREADY_ASSIGNED — Уже подключен. Наиболее часто возникает при повторном вызове данной функции с теми-же параметрами.

ERROR_BAD_DEV_TYPE — Неверный тип устройства.

ERROR_BAD_DEVICE — Неверное устройство указано в LocalName

ERROR_BAD_NET_NAME — Неверный сетевой путь или сетевое имя

ERROR_EXTENDED_ERROR — Некоторая ошибка сети (см. функцию WNetGetLastError для подробностей)

ERROR_INVALID_PASSWORD — Неверный пароль

ERROR_NO_NETWORK — Нет сети


2.Отключить сетевой ресурс

>WNetCancelConnection(LocalName:PChar; ForseMode:Boolean):Longint;

где

LocalName — имя, под которым сетевой ресурс был подключен к данному компьютеру (например 'F:')

ForseMode — режим отключения :

False — корректное отключение. Если отключаемый ресурс еще используется, то отключения не произойдет (например, на сетевом диске открыт файл)

True — скоростное некорректное отключение. Если ресурс используется, отключение все равно произойдет и межет привести к любым последствиям (от отсутствия ошибок до глухого повисания)


Функция возвращает код ошибки. Для всех кодов предописаны константы, наиболее часто используемые :

NO_ERROR — Нет ошибок — успешное завершение

ERROR_DEVICE_IN_USE — Ресурс используется

ERROR_EXTENDED_ERROR — Некоторая ошибка сети (см. функцию WNetGetLastError для подробностей)

ERROR_NOT_CONNECTED — Указанное ус-во не является сетевым

ERROR_OPEN_FILES — На отключаемом сетевом диске имеются открытые файлы и параметр ForseMode=false


Рекомендация: при отключении следует сначала попробовать отключить ус-во с параметром ForseMode=false и при ошибке типа ERROR_OPEN_FILES выдать запрос с сообщением о том, что ус-во еще используется и предложением отключить принудительно, и при согласии пользователя повторить вызов с ForseMode=true

Внешние модули (DLL), нити

Надо подключить DLL и использовать некоторые ее функции.

Есть первый вариант:

>procedure procname1(param1:type1; param2:type2... и т.д.) external 'dllname.dll' name 'procname_in_dllfile';

Но тут есть один нюанс: при отсутствии DLL модуля, либо при отсутствии в нем указанной процедуры будет выдаваться ошибка и запуск программы будет отменен.


Второй вариант: 

>Type

> prc1 = procedure (param1:type1; param2:type2... и т.д.) ;

>var

> proc1 : prc1;

> head : integer ; // или что-то в этом роде

> .....

>var

> p : pointer;

>begin

> head:= loadlibrary ('DLLFile.DLL'); // загружаем модуль в память

> if head=0 then begin

>  // Сообщаем о том что модуль не найден

> end

> else begin

>  // Ищем в модуле наши процедуры и функции

>  p:=getprocaddress ('Имя_Искомой_Процедуры');

>  // Тут посмотри точно название этой

>  // функции в хелпе по LoadLibrary.

>  // Имя_Искомой_Процедуры должно

>  // быть один в один с именем процедуры

>  // в библиотеке с учетом регистров.

>  if p=nil then begin

>   // Процедура не найдена

>  end else proc1:=prc1(p);

>end;

Как передать при создании нити (Tthread) ей некоторое значение? 

К примеру, функция "прослушивает" каталог на предмет файлов. Если находит, то создает нить, которая будет обрабатывать файл. Потомку надо передать имя файла, а вот как? 


Странный вопрос. Я бы понял, если бы требовалось передавать данные во время работы нити. А так обычно поступают следующим образом.

В объект нити, происходящий от TThread дописывают поля. Как правило, в секцию PRIVATE. Затем переопределяют конструктор CREATE, который, принимая необходимые параметры заполняет соответствующие поля. А уже в методе EXECUTE легко можно пользоваться данными, переданными ей при его создании.

Например:

......

>TYourThread = class(TTHread)

>private

> FFileName: String;

>protected

> procedure Execute; overrided;

>public

> constructor Create(CreateSuspennded: Boolean; const AFileName: String);

>end;

>.....

>constructor TYourThread.Create(CreateSuspennded: Boolean; const AFileName: String);

>begin

> inherited Create(CreateSuspennded);

> FFIleName := AFileName;

>end;

>procedure TYourThread.Execute;

>begin

> try

>  ....

>  if FFileName = ...

>  ....

> except

>  ....

> end;

>end;

>....

>TYourForm = class(TForm)

>....

>private

> YourThread: TYourThread;

> procedure LaunchYourThread(const AFileName: String);

> procedure YourTreadTerminate(Sender: TObject);

> ....

>end;

>....

>procedure TYourForm.LaunchYourThread(const AFileName: String);

>begin

> YourThread := TYourThread.Create(True, AFileName);

> YourThread.Onterminate := YourTreadTerminate;

> YourThread.Resume

>end;

>....

>procedure TYourForm.YourTreadTerminate(Sender: TObject);

>begin

> ....

>end;

> ....

>end.

>СGI программа должна показывать GIF изображение.

Имею тег.  Прочитать JPeg, указать ContentType=Image/jpeg и выдать изображение в SaveToStream умею. Как сделать тоже самое для файлов GIF, в особенности анимационных? Если можно просто перелить дисковый файл (пусть он хоть трижды GIF) в Response CGI-програмы, то как это сделать? 

Выдайте из скрипта следующее: 


>Content-type: image/gif  

><содержимое gif-файла>

Советы по работе с реестром. 

Использование некоторых ключей реестра

Добавление элементов в контекстное меню "Создать"

1. Создать новый документ, поместить его в папку Windows/ShellNew

2. В редакторе реестра найти расширение этого файла, добавить новый подключ, добавить туда строку: FileName в качестве значения которой указать имя созданного файла.


Еще от автора Неизвестный Автор
Галчонок

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Призраки ночи

В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.


Закат  вечности

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


mmmavro.org | День 131, Победа

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Песнь о Нибелунгах

…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.


mmmavro.org | День 132, Поэт

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.