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

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


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

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

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

Выпуск № 319
от 09.12.2005, 17:12

Администратор:Калашников О.А.
В рассылке:Подписчиков: 262, Экспертов: 50
В номере:Вопросов: 9, Ответов: 35


Вопрос № 30717: Доброго времени суток! Возникла тут у меня проблема. Необходимо создать программу, способную передавать и принимать файлы с FTP-сервера. Понятно что для реализации можно воспользоваться соответствующим компонентом. Но вот разобраться с ним я не м...
Вопрос № 30718: Доброго времени суток! Ещё помогите ещё разок, плиз. Условно задачу можно поставить так: Есть 2 приложения в виде запущенных процессов, без консоли и формы. Как можно осуществить обмен строковыми данными между программами. Можно конечно посре...
Вопрос № 30719: Есть функция для склеивания файлов в один. Клеит… Но при запуске итогового файла играет только первый файл. (к-й был первый на очереди склеивания) Подскажите что за беда? function MergeWavFiles(const SourceFiles: TStrings; const Destina...
Вопрос № 30722: Здравствуйте, уважаемые эксперты! Как сохранить текст из richedit в фаил при помощи Savedialog, так чтобы в качестве расширения фаила использовался Filter, выбранный в Combobox напротив типа фаила в окне сохранения? Спасибо. ..
Вопрос № 30726: Здраствуйте, подскажите я из программы наисанной в Delphi вывожу данные в Excel, но после вывода окно Excel оказывается не активным (на заднем плане программы). Как после вывода активизировать окно Excel (чтобы оно появлялось сразу же видимым для пол...
Вопрос № 30734: Как в Delphi считать текст со сканера. Желательно преобразовать его в строку. Усли можно, поподробней. Всем ПАСИБО...
Вопрос № 30750: Как преобразовать String в PAnsichar???...
Вопрос № 30758: Конечно немного не в тему, но листинг был на Delphi... Люди!!! По ошибке замочил листинг!!! Дайте ссылки на хорошие программы по восстановлению файлов! Срочно надо! Только хорошие программы и маловесящие! На диск ничего не записываю, поэтому шанс...
Вопрос № 30762: Здравствуйте! Подскажите как создать массив, когда конечное число его компонентов не известно....

Вопрос № 30.717
Доброго времени суток!
Возникла тут у меня проблема. Необходимо создать программу, способную передавать и принимать файлы с FTP-сервера. Понятно что для реализации можно воспользоваться соответствующим компонентом. Но вот разобраться с ним я не могу.Может что-нибудь посоветуете. Есть 2 вопроса.
1)Возобновится ли закачка после разрыва связи. Я понимаю что скорее всего нет, поэтому задаю в довесок вопрос как возобнить закачку с места обрыва.

2)Как ограничить трафик используемый при закачке файлов.
Отправлен: 03.12.2005, 18:51
Вопрос задал: Schmak (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Schmak!
1. Возобновляется ли закачка - зависит исключительно от того, поддерживает ли сервер FTP докачку. По крайней мере Вы можете попытаться это сделать, послав на него команду REST.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 03.12.2005, 19:43


Вопрос № 30.718
Доброго времени суток!
Ещё помогите ещё разок, плиз.
Условно задачу можно поставить так: Есть 2 приложения в виде запущенных процессов, без консоли и формы. Как можно осуществить обмен строковыми данными между программами. Можно конечно посредством COM, но с этим я не разбирался, да и проги нежелательно переделывать. Читал что-то о пользовательских сообщениях. но ничего не получилось. Пожалуйста объясните, если можно то с примером.
Отправлен: 03.12.2005, 18:51
Вопрос задал: Schmak (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Schmak!
Если проги нельзя переделывать, то Вам ничего не поможет - не питайте ложных иллюзий. Пользовательские сообщения - это всего лишь коды, которые передаются от ОС компонентам и обратно при возникновении тех или иных событий. Это отнюдь не обмен сообщениями в текстовой форме.
Если я Вас неправильно понял, изьяснитесь более подробно о Вашей цели.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 03.12.2005, 19:47

Отвечает: Zubex
Здравствуйте, Schmak!
Посмотри в SDK-Help`е или в MSDN сообщение WM_COPYDATA.
---------
Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 3-ий класс)
Отправлен: 05.12.2005, 16:04


Вопрос № 30.719
Есть функция для склеивания файлов в один.
Клеит… Но при запуске итогового файла играет только первый файл. (к-й был первый на очереди склеивания) Подскажите что за беда?

function MergeWavFiles(const SourceFiles: TStrings; const Destination: string): boolean;
type
// äëÿ ñêëåéêè îäíîðîäíûõ ôàéëîâ èìåþò çíà÷åíèå òîëüêî FileLength è DataLength
TWaveHeader = packed record // âñåãî-òî 44 áàéòà
dummy1: array[1..4] of byte; //"RIFF"
FileLength: cardinal; // íó íå äëèíà ôàéëà, à äëèíà ôàéëà ìèíóñ 8 áàéò
dummy2: array[1..8] of byte; //"WAVEfmt "
ChunkLength: cardinal; //
dummy3: array[1..32] of byte;//
DataLength: cardinal;
end;

function MergeWavFiles(const SourceFiles: TStrings; const Destination: string): boolean;
var
i, HeaderSize: integer;
fssrc, fsdest: TFileStream;
destheader: TWaveHeader;
begin
try
fsdest := TFileStream.Create(Destination, fmCreate);
HeaderSize := sizeof(TWaveHeader);
try
for i := 0 to SourceFiles.Count - 1 do
if FileExists(SourceFiles[i]) then
begin
fssrc := TFileStream.Create(SourceFiles[i], fmOpenRead);
try
if fsdest.Size = 0 then // êîïèðóåì çàãîëîâîê ïåðâîãî ñóùåñòâóþùåãî ôàéëà â çàãîëîâîê ñóììû
begin
fssrc.Seek(0, soFromBeginning);
fssrc.Read(destheader, HeaderSize);
end;
fssrc.Seek(HeaderSize, soFromBeginning);
fsdest.CopyFrom(fssrc, fssrc.Size - HeaderSize); // êîïèðóåì òîëüêî äàííûå(áåç çàãîëîâêîâ)
// ïîòîì ìîäèôèöèðóåì ñ÷åò÷èêè ðàçìåðà
destheader.DataLength := destheader.DataLength - fssrc.Size - HeaderSize;
destheader.FileLength := destheader.FileLength - fssrc.Size - HeaderSize;
finally
fssrc.Free;
end;
end;
fsdest.Seek(0, soFromBeginning);
fsdest.Write(destheader, HeaderSize);
Result := true;
finally
fsdest.Free;
end;
except
Result := false;
end;
end;
Отправлен: 03.12.2005, 18:55
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Denisss
Здравствуйте, REFERI!
Вы как-то неправильно скопировали исходники (см. приложение)
Все отличие только в том, что Вы в двух местах + заменили на - (хотя не исключено, что это не Вы, а тот, у кого Вы скопировали).

Прим.
Как сказано на сайте "Мастера Delphi", код недоделанный:
нет проверки на "одинаковость" файлов и др. недочеты

Приложение:

Ответ отправил: Denisss (статус: Специалист)
Отправлен: 04.12.2005, 00:57
Оценка за ответ: 3


Вопрос № 30.722
Здравствуйте, уважаемые эксперты!
Как сохранить текст из richedit в фаил при помощи Savedialog, так чтобы в качестве расширения фаила использовался Filter, выбранный в Combobox напротив типа фаила в окне сохранения?
Спасибо.
Отправлен: 03.12.2005, 19:30
Вопрос задал: Граур Василий Олегович (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: REFERI
Здравствуйте, Граур Василий Олегович!
Кидаем на форму RichEdit, SaveDialog, Button.
В свойстве Filtr DialogBox-а пишем текст|*.txt
Затем при нажатии на батон пишем
SaveDialog1.Execute;
richedit1.Lines.SaveToFile(SaveDialog1.FileName+'.txt');
Все!

---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 03.12.2005, 19:53

Отвечает: sir henry
Здравствуйте, Граур Василий Олегович!
SaveDialog всего лишь задает имя файла, не более того.
SaveDialog1.Filter:='Файлы RTF|*.rtf'; {Задание фильтра}
SaveDialog1.DefaultExt:='rtf'; {Расширение по умолчанию}
If SaveDialog1.execute Then
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
Ответ отправил: sir henry (статус: Академик)
Отправлен: 03.12.2005, 19:59

Отвечает: Vitava
Здравствуйте, Граур Василий Олегович!

SaveDialog1.Filter:='Rtf Files |*.rtf'; // фильтр
SaveDialog1.DefaultExt:='rtf'; // расширение файла по умолчанию
Удачи вам.
Ответ отправил: Vitava (статус: 5-ый класс)
Отправлен: 03.12.2005, 22:45

Отвечает: Denisss
Здравствуйте, Граур Василий Олегович!
В приложении приведен пример. Названия кнопки, диалога и RichEdit не поменял специально, чтобы не запутать.
Фильтр заполнять перед сохранением не обязательно - достаточно его заполнить один только раз.
FilterIndex - номер выбранного фильтра (нумеруется от 1)
Т.е. в примере 1 - TXT, 2 - RTF, 3 - *.*
UpperCase работает только с английскими символами. Если Вам понадобится сделать русское расширение (что крайне нежелательно), то воспользуйтесь AnsiUpperCase

Удачи!

Приложение:

Ответ отправил: Denisss (статус: Специалист)
Отправлен: 03.12.2005, 23:35

Отвечает: Schmak
Здравствуйте, Граур Василий Олегович!
1)Во время проектирования указываете необходимые расширения и описания к ним в свойство Filter.
2)В свойство DefaultExt заносите расширение по умолчанию rtf.
3)Далее собственно вызываете диалог и сохраняете в файл
if SaveDialog1.Execute then
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 04.12.2005, 14:07

Отвечает: Golden Spider
Здравствуйте, Граур Василий Олегович!
Предлагаю вам такой вариант:
создайте строковый массив с количеством элементов равных количевству типо файлов в Savedialog, и заполните его типами файлов (mass[1]:='.txt').
Далее делаете так:

begin
if fileexists(savedialog1.filename) then
richedit1.lines.savetofile(savedialog1.filename)
else
richedit1.lines.savetofile(savedialog1.filename+mass[savedialog1.filterindex]);
end;

Удачи!


---------
Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 04.12.2005, 15:50


Вопрос № 30.726
Здраствуйте, подскажите я из программы наисанной в Delphi вывожу данные в Excel, но после вывода окно Excel оказывается не активным (на заднем плане программы). Как после вывода активизировать окно Excel (чтобы оно появлялось сразу же видимым для пользователя).
Заранее благодарен.
Отправлен: 03.12.2005, 21:15
Вопрос задал: Захаров Дмитрий Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Захаров Дмитрий Александрович!
Вам нада делать Эксель видимым уже после передачи в него данных. Это будет черезвычайно полезно для скорости передачи.
var
Exc: OleVariant;
Begin
Exc:=CreateObject('Excel.Application');
Exc.Visible:=False;
...
{Здесь Вы передаете данные}
...
Exc.Visible:=True;
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 04.12.2005, 08:38


Вопрос № 30.734
Как в Delphi считать текст со сканера.
Желательно преобразовать его в строку.
Усли можно, поподробней.
Всем ПАСИБО
Отправлен: 03.12.2005, 23:24
Вопрос задал: Ton (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bochvarov NikB
Здравствуйте, Ton!
Ето две разние дела: скенер и декодировка в текст.
Первое - не так сложное, но я не нашел хорошие безплатние компоненти (надо искать TWAIN компонент (я пробовал MultiTWAIN, ezTwain и другие, хужие), но думаю, что мне придется платит :(
Второе труднее, с ним не занимался :((
Ответ отправил: Bochvarov NikB (статус: 4-ый класс)
Отправлен: 04.12.2005, 00:36

Отвечает: Golden Spider
Здравствуйте, Ton!
Вобще-то чтобы считать текст, со сканера используют специальные программы распознавания текста, вроде FineReader.
А для получения изображений со сканера попробуйте поискать компоненты для этого (TWAIN и др.).
---------
Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 04.12.2005, 15:25

Отвечает: Vbhjndjhtw
Здравствуйте, Ton!
С какого сканера? Со сканера штрихкодов? Или со сканера изображения?
P.S.У меня есть исходник считывания штрихкода.
---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 6-ой класс)
Отправлен: 05.12.2005, 09:45


Вопрос № 30.750
Как преобразовать String в PAnsichar???
Отправлен: 04.12.2005, 14:31
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Samum
Здравствуйте, REFERI!
Очень просто: PANSYChar(StringVariable);
Delphi всю работу сам сделает.
---------
Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!
Ответ отправил: Samum (статус: Специалист)
Отправлен: 04.12.2005, 14:36
Оценка за ответ: 5

Отвечает: Татьяна
Здравствуйте, REFERI!
уже отвечала на этот вопрос, поэтому просто процитирую ответ
Обычно, если нужно передевать строку в качестве параметров помогает преобразование типа
PAnsiChar(str) (у меня это PChar(str) - суть дела не меняет)
Ну а если делать правильно, см. приложение
Желаю удачи

Приложение:

---------
Нет ничего невозможного!!!

Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 04.12.2005, 15:03
Оценка за ответ: 5

Отвечает: Golden Spider
Здравствуйте, REFERI!
Очень просто:
используйте функцию преобразования Pchar(string):PansiChar

Пробуйте!
---------
Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 04.12.2005, 15:18
Оценка за ответ: 5

Отвечает: Маренич Владимир
Здравствуйте, REFERI!
var s: string;
begin
....PAnsichar(S)
end;
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 04.12.2005, 15:43

Отвечает: sir henry
Здравствуйте, REFERI!
Все очень просто:
var
s: String;
p: PAnsiChar;
Begin
s:='Что-нибудь типа написано.';
p:=PChar(s);
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 04.12.2005, 18:13

Отвечает: Ерёмин Андрей
Здравствуйте, REFERI!
А прямо вот так и преобразовать:
var str2: pansichar; str1: string;
...
str2:=pchar(str1);

---------
Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 04.12.2005, 18:16

Отвечает: Schmak
Здравствуйте, REFERI!
При помощи функции Pchar(s:string):Pansichar
А в принципе Вы можете посмотреть ответ на вопрос №29298

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: Студент)
Отправлен: 04.12.2005, 20:04

Отвечает: Vadim Vitomsky
Здравствуйте, REFERI!
PChar(s);
где s : String;
Ответ отправил: Vadim Vitomsky (статус: 5-ый класс)
Отправлен: 05.12.2005, 10:09


Вопрос № 30.758
Конечно немного не в тему, но листинг был на Delphi...
Люди!!! По ошибке замочил листинг!!! Дайте ссылки на хорошие программы по восстановлению файлов! Срочно надо! Только хорошие программы и маловесящие! На диск ничего не записываю, поэтому шансы воостановить доку большие...
Отправлен: 04.12.2005, 16:05
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, REFERI!
EasyRecovery Pro. В свое время многим "жизнь" вернула :)
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 04.12.2005, 16:21

Отвечает: CJ
Здравствуйте, REFERI!
http://grandutils.com/Back2Life/ - Back2Life
У меня она проявила хорошие показатели работы.
Ответ отправил: CJ (статус: Студент)
Отправлен: 04.12.2005, 23:28

Отвечает: Vadim Vitomsky
Здравствуйте, REFERI!
Если файловая система FAT, то я пользуюсь DOS'овской программой Unerase.exe
Если надо выслать - пиши на cybersoft@rambler.ru с темой unerase
Ответ отправил: Vadim Vitomsky (статус: 5-ый класс)
Отправлен: 05.12.2005, 10:10


Вопрос № 30.762
Здравствуйте!
Подскажите как создать массив, когда конечное число его компонентов не известно.
Отправлен: 04.12.2005, 16:23
Вопрос задала: Артемова Марина (статус: Посетитель)
Всего ответов: 10
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Каськов Артем Игоревич
Здравствуйте, Артемова Марина!
Делается это очень просто
var
моймассив:array of ТипДанныхЭлементоа
Далее при возникновении какого-то события задаем его длину
SetLength(моймассив,кол-во элементов)
Ответ отправил: Каськов Артем Игоревич (статус: 4-ый класс)
Отправлен: 04.12.2005, 16:34

Отвечает: Jadd
Здравствуйте, Артемова Марина!
Очень просто. Эта конструкция называется - динамический массив. Объявляется такое так:

myArr: array of integer; //тип может быть любым

дальше, нам нужно его инициализировать или просто выделить память для массива, размером n-элементов или для 1-го элемента с тем, чтобы на каждой итерации выделять еще место для еще одного елемента. Делается это так:

SetLength(myArr, 10); //если известно сколько элементов

или

SetLength(myArr, Length(myArr)+1); //Если количество элементов не известно и может расти в зависимости от условий программы.

Удачи. Пишите, если будут вопросы.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 04.12.2005, 16:36
Оценка за ответ: 5

Отвечает: Татьяна
Здравствуйте, Артемова Марина!
ну это классический динамический массив
a : array of integer
установить длину массива
SetLength(а,5)
узнать длину length(a)
ну и в конце работы не забывать очистить массив
SetLength(а,0)
ну вот, вообщем то основы есть.
Желаю удачи

---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 04.12.2005, 16:59
Оценка за ответ: 4

Отвечает: Vitava
Здравствуйте, Артемова Марина!
1. можно использовать динамические структуры;
2. можно использовать таблицу базы данных.
Удачи Вам.
Ответ отправил: Vitava (статус: 5-ый класс)
Отправлен: 04.12.2005, 17:10

Отвечает: sir henry
Здравствуйте, Артемова Марина!
Вы просто не задаете размер массива, только его тип:
Var
ar: array of integer;
Begin
{Когда станет известен размер массива, задать его так}
SetLength(ar, Kolichestvo);
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 04.12.2005, 18:16

Отвечает: Schmak
Здравствуйте, Артемова Марина!
Для этого существуют динамические массивы. Вопрос звучал сравнительно недавно, поэтому в приложении я привожу мой ответ на вопрос 30702.

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: Студент)
Отправлен: 04.12.2005, 20:05

Отвечает: Golden Spider
Здравствуйте, Артемова Марина!
Для этого нужно создать динамический массив.
Он описывается так же как и обычный массив только без указания количества элементов (array of type).
Для того чтобы задать кольчество элементов нужно использовать процедуру SetLength(Имя_массива,Кол-во_элементов).
По окончании работы с ним его можно очистить Имя_массива:=nil;
После этого кол-во элементов устанавливается на 0.

Пользуйтесь!

---------
Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 04.12.2005, 20:45

Отвечает: Ерёмин Андрей
Здравствуйте, Артемова Марина!
Для этой цели следует использовать динамические массивы. Для примера, смотрите мой ответ на вопрос 30702: http://rusfaq.ru?Step=info&Action=Question&ID=30702.
---------
Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 04.12.2005, 22:45

Отвечает: CJ
Здравствуйте, Артемова Марина!
Недавно сам задавал такой вопрос, а щас отвечу:
необходимо создать динамический массив: a: array of integer;
SetLength(a, n); - устанавливаем длинну массива.
И нижний индекс массива будет начинаться с 0.
Ответ отправил: CJ (статус: Студент)
Отправлен: 04.12.2005, 23:27

Отвечает: Vadim Vitomsky
Здравствуйте, Артемова Марина!
Попробуйте использовать динамические массивы:
var a : array of Integer;

Основные функции для работы с динамическим массивом:

SetLength - устанавливает новый размер массива.
Length - возвращает количество элементов в массиве.
Low - индекс первого элемента в массиве (всегда 0 для динамических массивов).
High - индекс последнего элемента в массиве.
Copy - возвращает подмножество элементов массива.
Slice - используется при передаче динамического массива в процедуры в качестве открытого массива (open arrays).
Ответ отправил: Vadim Vitomsky (статус: 5-ый класс)
Отправлен: 05.12.2005, 10:12


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное