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

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


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


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

Выпуск № 232
от 18.10.2003, 20:50

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


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

Cybernetic Creature
Статус: Профессиональный
Общий рейтинг: 129.85
URL: В разработке
[Подробней >>]
THE_PRO
Статус: Доверительный
Общий рейтинг: 139.34
[Подробней >>]
sir henry
Статус: Опытный
Общий рейтинг: 154.47
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.06
[Подробней >>]
CJ
Статус: Доверительный
Общий рейтинг: 126.92
[Подробней >>]
samum2000
Статус: Начальный
Общий рейтинг: 120.58
[Подробней >>]
 
Marouder
Статус: Профессиональный
Общий рейтинг: 123.44
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.88
URL: Программирование
[Подробней >>]
SkiFF
Статус: Опытный
Общий рейтинг: 133.93
[Подробней >>]
 
ART_43
Статус: Опытный
Общий рейтинг: 119.42
URL: ART_43 Home Site
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.75
URL: Пристанище неодинокого программиста
[Подробней >>]
Boriss
Статус: Доверительный
Общий рейтинг: 136.14
[Подробней >>]
 
Jact M Anchorite
Статус: Доверительный
Общий рейтинг: 118.53
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 121.98
[Подробней >>]
Vdr
Статус: Опытный
Общий рейтинг: 110.17
[Подробней >>]


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

Вопрос № 1018. Здравствуйте ув. Эксперты. Как сделать чтобы при нажатии на Button1 ВСЕ файлы с 'C:program filesPapk... (ответов: 8)
Вопрос № 1019. Здравствуйте, эксперты! Скажите, пожалуйста, как во время игры(например, The Need For The Speed VI) ... (ответов: 4)
Вопрос № 1020. Здравствуйте уважаемые эксперты! У меня к вам три вопроса, насчет Delphi 7: 1) Как производить запис... (ответов: 2)
Вопрос № 1021. Уважаемые эксперты, вопрос : Необходимо написать прогу для 3 пользователей, представим, что платформ... (ответов: 2)
Вопрос № 1022. Здравствуйте Уважаемые эксперты. К вопросу № 1017. Решил я проблему, которая заключалась в следующем... (ответов: 2)
Вопрос № 1023. Здравствуйте эксперты! У меня следующая проблема: динамически создаю СкроллБар: --------------------... (ответов: 8)
Вопрос № 1024. Здравствуйте Эксперты! Приятно, когда программа закончена и наступает более приятная стадия в плане... (ответов: 3)
Вопрос № 1025. Уважаемые эксперты, ломаю голову о стену: Программа работает с ADO (mdb) Происходит примерно следующ... (ответов: 1)
Вопрос № 1026. Здравствуйте, уважаемые эксперты!! Я по поводу вопроса 1004. Я не точно выразился, когда писал о T... (ответов: 9)
Вопрос № 1027. Уважаемые эксперты! Подскажите пожалуйста, как в Delphi создавать фигурные формы. ... (ответов: 3)
Вопрос № 1028. Привет эксперты! Мне тут прогу надо делать. Она должна полностью определять установленное в компе же... (ответов: 2)
Вопрос № 1029. Здравствуйте уважаемые эксперты! Я насчет трёх вопросов (№1020) по Delphi 7: Специально для Cybernet... (ответов: 4)
Вопрос № 1030. привет эксперты. вопрос такой: принажатии на кнопку - открывается документ word и редактируется, при... (ответов: 3)

Вопросов: 13, ответов: 51


 Вопрос № 1018

Здравствуйте ув. Эксперты.
Как сделать чтобы при нажатии на Button1 ВСЕ файлы с 'C:program filesPapka' Скопировались на 'A:
Заранее благодарю!!!'


Приложение:


Вопрос отправлен: 14.10.2003, 00:09
Отправитель: Lefty

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

Отвечает Cybernetic Creature

Добрый день, Lefty!
Как скопировать директорию с файлами
--------------------------------------------------------------------------------

unit FilesOp;
interface
uses Forms, SysUtils, ShellAPI, Dialogs;
procedure CopyFiles(const FromFolder: string; const ToFolder: string);
implementation
procedure CopyFiles(const FromFolder: string; const ToFolder: string);
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p, PChar(FromFolder)); //директория, которую мы хотим скопировать
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Application.Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := PChar(ToFolder); //куда будет скопирована директория
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage('File copy process cancelled')
end;
end.



Ответ отправлен: 14.10.2003, 13:25
Отправитель: Cybernetic Creature


Отвечает THE_PRO

Здравствуйте, Lefty!


Ответ отправлен: 14.10.2003, 09:14
Отправитель: THE_PRO


Отвечает sir henry

Добрый день, Lefty!
Это можно сделать следующей функцией:
CopyFile( 'C:program filesPapka*.*', 'A:', Flag);
где Flag равен:
True - существующие файлы не перезаписываются;
False - существующие файлы перезаписываются.

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


Отвечает vitya

Приветствую Вас, Lefty!
с помощью функций FindFirstFile, FindNextFile находишь все файлы, а потом через вызов функции CopyFile копируешь куда надо.

Ответ отправлен: 14.10.2003, 09:26
Отправитель: vitya


Отвечает CJ

Здравствуйте, Lefty!
Испоьзуй процедуру копирования!

Ответ отправлен: 15.10.2003, 14:52
Отправитель: CJ


Отвечает samum2000

Приветствую Вас, Lefty!
Я предлагаю вам использовать следующие функции: FindFirst - чтобы найти первый файл в катологе, FindNext - чтобы искать все последующие, а для копирования может быть полезна следующая процедура
procedure copyfile(src,dst:string); {src - полное имя файла, который надо скопировать, dst - куда и под каким именем его надо копировать}
var
Source, Destination:TStream;
begin
Source := TFileStream.Create(src, fmOpenRead or fmShareDenyWrite);
try
Destination := TFileStream.Create(dst, fmCreate or fmShareDenyRead);
try
Destination.CopyFrom(Source,Source.Size);
finally
Destination.Free;
end;
finally
Source.Free
end;
end;


Ответ отправлен: 16.10.2003, 10:58
Отправитель: samum2000


Отвечает Marouder

Доброе время суток, Lefty!
Теоретически: Сначала получить список файлов, которые там находятся. Потом скопировать каждый файл.
Используй FindFirstFile,FindNextFile,CopyFile или CopyFileEx.

Ответ отправлен: 14.10.2003, 07:40
Отправитель: Marouder


Отвечает Bob Johnson

Здравствуйте, Lefty!
Можно запустить внешний файл (типа xcopy32), который это сделает.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 15.10.2003, 01:23
Отправитель: Bob Johnson


 Вопрос № 1019

Здравствуйте, эксперты!
Скажите, пожалуйста, как во время игры(например, The Need For The Speed VI) вывести в правый верхний угол что-либо (например, картинку, панель с часами и т.п.) через определенное время, но чтобы при этом игра не тормозила и работала также без сбоев.
Пробовал через FindWindow(0,"Имя игры"), но ничего не вышло.
Жду от Вас дельных советов.
Заранее огромное спасибо!



Вопрос отправлен: 14.10.2003, 00:21
Отправитель: Эдуард

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

Отвечает sir henry

Здравствуйте, Эдуард!
Только через DirectX. Очевидно игра использует функции DirectX. Не спец по нему, поэтому более конкретно сказать не могу. Есть хорошая книжка по нему (и, надо сказать, единственная :), автор - Краснов.

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


Отвечает Cybernetic Creature

Приветствую Вас, Эдуард!
Сделайте форму с свойством поверх всех окон. спрячте ее. а через определенное время пусть показывается на 5 сек.

Ответ отправлен: 14.10.2003, 13:24
Отправитель: Cybernetic Creature


Отвечает Marouder

Добрый день, Эдуард!
Не, ерунда это. Ну, найдешь ты окно, допустим, получишь его DC - все равно тебе придется заного рисовать эту картинку все время, так как она будет постоянно исчезать.

Ответ отправлен: 14.10.2003, 07:40
Отправитель: Marouder


Отвечает Bob Johnson

Добрый день, Эдуард!
Просто вывести - это невозможно. Дело в том, что в полноэкранном режиме сама видеокарта знает, что работает в полноэкранном режиме и перерисовывает обязательно весь экран. Можно что-то вывести в другом потоке - даже просто создать окно always on top и переодически его перерисовывать. Тогда в те моменты, когда ты его перерисуешь, оно появится на экране, далее оно будет стерто тем, что игра перерисует весь экран.
Пример реализации такой штуки есть в asus osd (управление стереорежимом), но игра начинает ужасно тормозить (да, к тому же, они там могут и драйвер использовать).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 15.10.2003, 01:24
Отправитель: Bob Johnson


 Вопрос № 1020

Здравствуйте уважаемые эксперты!
У меня к вам три вопроса, насчет Delphi 7:
1) Как производить запись и чтение данных с LPT-порта (378h) в WinXP, без использования каких-либо дополнительных компонентов? В WinXP, закрыт доступ у портам I/O, значит надо работать с файлом "LPT1", а как именно производить запись и чтение переменной wWord в этот файл.
2) Как приаттачить файл к e-mail сообщению, используя компоненты Indy (в частности TIdSMTP, TIdMessage или еще что-нибудь).
3) Как в используя TIdSMTP и TIdMessage, заходить на SMTP-сервер со специфическим User-ID (например 111111111111)?
Заранее благодарен.


Приложение:


Вопрос отправлен: 14.10.2003, 06:46
Отправитель: ShurA (shura_com@mail.ru)

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

Отвечает THE_PRO

Здравствуйте, ShurA!
2)Rabotay s zaqolovkami, ili je MIME,
3)Tolko yesli etoto user zaregistrirovan na etom servake!

Ответ отправлен: 14.10.2003, 09:21
Отправитель: THE_PRO


Отвечает Cybernetic Creature

Доброе время суток, ShurA!
function GetPortAddress(PortNo: integer): word; assembler; stdcall;
asm
push es
push ebx
mov ebx, PortNo
shl ebx,1
mov ax,40h // Dos segment adress
mov es,ax
mov ax,ES:[ebx+6] // get port adress in 16Bit way :)
pop ebx
pop es
end;


Ответ отправлен: 14.10.2003, 13:25
Отправитель: Cybernetic Creature


 Вопрос № 1021

Уважаемые эксперты,
вопрос :
Необходимо написать прогу для 3 пользователей,
представим, что платформа WIN98.
Причем прогу хочу написать по такой схеме :
Базы -> Клиент
^
|
Клиент
Без сервера, так как я не знаю как работать с сервером SQL через дельфи, можно использовать компоненту TQuery
с SQL командами знаком, а эту писал на TTable
Так вот, эсперементально написал простенькую прогу , записывающую
текст инфу в базу, поставил таймер на 10 сек. в событие
(Table1.Refresh), объявил каталог с базами общим
и на другом компе установил эту же прогу, в надежде
синхронизации записи на обоих компьютерах, увы - неудача
Запись происходит но не синхронизируется.
Прошу помочь.
Прилагаю код :


Приложение:


Вопрос отправлен: 14.10.2003, 09:41
Отправитель: Jiny (zhas-trz@nursat.kz)

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

Отвечает sir henry

Здравствуйте, Jiny!
1. Активирован ли таймер?
2. Refresh производиться только когда выполнены с БД Post или Delete.
3. Refresh можно делать если State=dsBrowse.


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


Отвечает Bob Johnson

Приветствую Вас, Jiny!
Используй interbase - тебе ничего не надо будет делать, чтобы работать с сетевой базой данных, просто указать сетевой путь (без какого-либо там сетевого диска).
Еще, при транзакционном обращении к БД нужно подтверждать транзакцию, чтобы изменения вступили в силу.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 15.10.2003, 01:25
Отправитель: Bob Johnson


 Вопрос № 1022

Здравствуйте Уважаемые эксперты.
К вопросу № 1017. Решил я проблему, которая заключалась в следующем: доступ к серверу на клиенской машине осуществлялся не через BDE как должно, а напрямую через ODBC и транзакции зависали... Но вот вопрос остался: как я понимаю схема действия через BDE выглядит так:
программа -> BDE -> ODBC -> Server -> БД
если работать через ODBC, то просто выбрасывается одно звено, почему же тогда глючит? или я не прав?
Заранее благодарен!



Вопрос отправлен: 14.10.2003, 11:26
Отправитель: VDR

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

Отвечает SkiFF

Дмюоьх делщ, VDR!
BDE аъеждч номюяеп очюмпчпщ ъчкмъпмзпейщлм у йуэщ а ъупячфуу имждч ыпм леамцкмтлм номюяеп ODBC.

Ответ отправлен: 14.10.2003, 13:55
Отправитель: SkiFF


Отвечает THE_PRO

Приветствую Вас, VDR!
U ODBC svoi prichudi

Ответ отправлен: 16.10.2003, 11:04
Отправитель: THE_PRO


 Вопрос № 1023

Здравствуйте эксперты!
У меня следующая проблема: динамически создаю СкроллБар:
-------------------------------------------------------------
scr:=TScrollBox.Create(nil);
with scr do begin
parent:=Form1;
left:=168;
top:=152;
VertScrollBar.Style:=ssHotTrack;
Height:=305;
Width:=425;
Name:='scroll';
BorderStyle:=bsNone;
Color:=$00C6F9FF;
DragKind:=dkDock;
DragMode:=dmAutomatic;
end;
-------------------------------------------------------------
Динамически создаю на нем несколько картинок и надписей:
-------------------------------------------------------------
for i1:=0 to 5 do begin
new:=TImage.Create(nil);
with new do begin
Parent:=scr;
left:=0;
top:=form1.tag;
picture.LoadFromFile(dir+inttostr(i)+'.bmp');
AutoSize:=true;
Transparent:=true;
Cursor:=crHandPoint;
name:='img'+inttostr(i1);
inc (i,1);
end;
with newl do begin
newl:=TLabel.Create(nil);
newl.Parent:=scr;
newl.left:=50;
newl.top:=form1.tag+5;
newl.caption:=Os[i1];
end;
form1.tag:=form1.tag+40;
-------------------------------------------------------------
Как мне теперь можно удалить этот Скроллбар вместе с содержимым (картинки и надписи)?
[если можно подробнее];



Вопрос отправлен: 14.10.2003, 13:03
Отправитель: maDByte

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

Отвечает sir henry

Здравствуйте, maDByte!
При удалении родительского объекта автоматически удаляются все дочерние объекты. Например, когда Вы даете Form1.Release, Вы никогда не удаляете вручную все расположеные на форме кнопки, едиты и т.п.
Т.е. достаточно выдать scr.Free.

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


Отвечает Bob Johnson

Добрый день, maDByte!
scr.Free ();
Это удалит сам скроллбокс (ты это имелл ввиду?) и всех его детей.
Да, когда создаешь как ...Create, то указывай как параметр родителя (т.е. тот же scr).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.10.2003, 23:45
Отправитель: Bob Johnson


Отвечает ART_43

Здравствуйте, maDByte!
При добавлении своих элементов используй
scr.InsertControl(new);
scr.InsertControl(newl);
а потом просто можно сделать scr.destroy и scr сам удалит все эти картинки и надписи

Ответ отправлен: 14.10.2003, 17:37
Отправитель: ART_43


Отвечает Артём Шегеда

Доброе время суток, maDByte!

Хе! Так ты саздавай картинки и надписи с Owner=scr:
new:=TImage.Create(scr);
//...
newl:=TLabel.Create(scr);

И всё. Тогда владельцем этих объектов будет скроллбокс (а не скроллбар, как ты написал), соответственно - умирает владелец, умирают дочерние объекты.

Ответ отправлен: 14.10.2003, 14:07
Отправитель: Артём Шегеда


Отвечает samum2000

Доброе время суток, maDByte!
Для уничтожения твоего Scrollbar'a в нужном месте программы необходимо записать:
Scr.Destroy;

Ответ отправлен: 16.10.2003, 11:07
Отправитель: samum2000


Отвечает CJ

Добрый день, maDByte!
Непонятно что те надо! Удалить или что?


Ответ отправлен: 15.10.2003, 14:51
Отправитель: CJ


Отвечает Boriss

Доброе время суток, maDByte!
scr.Free; - работает, проверил.
НО ........
Удалить все из памяти нельзя по следующей причине, посмотри на это, например:
new:=TImage.Create(nil); - создается в цикле новый объект, а значит на прежний ссылка ТЕРЯЕТСЯ!!!
К нему теперь нелья обратиться, его нельзя удалить.
Надо объекты заносить в коллекцию, это позволит ими управлять. Сами Delphi так и поступают


Ответ отправлен: 17.10.2003, 08:52
Отправитель: Boriss


Отвечает Cybernetic Creature

Добрый день, maDByte!
scr.Destroy, Scr.Free

Ответ отправлен: 15.10.2003, 17:37
Отправитель: Cybernetic Creature


 Вопрос № 1024

Здравствуйте Эксперты!
Приятно, когда программа закончена и наступает более приятная стадия в плане фантазии - её защита.
В этом плане у меня к Вам пару вопросов, которые в принципе сводятся к одному - как затруднить исследование кода?
Писал на Delphi.
1. Какой принцип защиты выбрать?
Я пока остановился на привязке программы к: биосу (дате, версии), железу(номер винта, ...).
Из полученной строки генерирую номер, в ответ на который нужно ввести код регистрации, допустим какой-нибудь CRC номера.
2. Куда засунуть генерацию номера и проверку кода? Где тяжелей трассировать?
Можно поток создать, можно в какой нибудь VCL засунуть типа AnimatedImage из RX,
где код постоянно будет прыгать на перерисовку изображений (хотя тут я сомневаюсь. Вообще если
трассировать какой-нибудь Onclick и будет где-то таймер включен, то мы перелетим на таймера обработчик?).
3. Как запутать DeDe (классная программа!)?
Один хер он код покажет, есть ли вариант его ввести в заблуждение?
4. Есть ещё одна мысль у меня - допустим в ответном коде регистрации предусмотреть кроме CRC номера и адрес процедуры проверки.
и потом просто:
procedure StartVerify(kod: String);
var
offsetProc: Dword;
begin
offsetProc:=GetProcAddres(kod);
try
asm
mov esi, offsetProc
call esi
end; // Кстати, как будет выглядеть вызов процедуры на Delphi?
exception

end;
end;
Если что не то, то улетим хрен знает куда.
Но всё равно это что-то не то кажется.
Plees, посоветуйте как оригинальней сделать. Не слишком замудренное, но что бы более-менее соображающим
в асме пропало желание копаться в коде.
Спасибо за любой ответ.
С ув. Игорь
P.S. Извините за повтор кому пришёл, отправляю в два форума.



Вопрос отправлен: 14.10.2003, 15:27
Отправитель: Игорь (firemen01@ukr.net)

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

Отвечает samum2000

Здравствуйте, Игорь!
Проблема программ, написанных на Delphi, состоит в том, что их практически невозможно сколько-нибудь серьезно защитить.
Проблема же программистов состоит в том, что они категорически отказываются изучать способы взлома чужих программ.
Если вы хотите защитить свою программу, то, во-первых, посетите сайты по взлому программ (наприме, http://cracklab.narod.ru). Во-вторых, внимательно разберитесь в статьях, и способах "разборки" программ. После этого вы сможете максимально затруднить исследование кода.


Ответ отправлен: 16.10.2003, 10:52
Отправитель: samum2000


Отвечает CJ

Здравствуйте, Игорь!
Информацию вставляй в код программы!


Ответ отправлен: 15.10.2003, 14:52
Отправитель: CJ


Отвечает Cybernetic Creature

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

Ответ отправлен: 15.10.2003, 17:37
Отправитель: Cybernetic Creature


 Вопрос № 1025

Уважаемые эксперты, ломаю голову о стену:
Программа работает с ADO (mdb)
Происходит примерно следующее:
1. я изменяю поля таблицы, используя UPDATE через ADOQuery, также пробывал и через методы ADOTable: Edit - Post.
2. Потом читаю значения используя ADOQuery через Select :
Обнаруживается, что в 2 поля еще не изменены. Зато если искусственно замедлить прогу после 1, то все становиться нормально (в 2 читаю уже обновленные поля).
Может я что не так понимаю, либо существуют законные методы подскажите.
Заранее благодарен.



Вопрос отправлен: 14.10.2003, 19:07
Отправитель: Hyzhak

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

Отвечает sir henry

Приветствую Вас, Hyzhak!
Есть еще хороший компонент ADOCommand. Я думаю, он как раз подойдет, когда надо выполнять команды типа UPDATE, DELETE, DROP и т.п.

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


 Вопрос № 1026

Здравствуйте, уважаемые эксперты!!
Я по поводу вопроса 1004. Я не точно выразился, когда писал о Tab. Я имел в виду Tab-control.
Эксперту URiS. С "Turbo Pascal'ем поиграться." - это если создавать полноценные движки. На Паскале будет проще. (Хотя я точно не знаю, кажется), а я же хочу сделать простенькую игрушку. Эдак не больше 1 Мб. Окно, несколько объектов и всё. В Delphi такое будет проще.
Вопрос (это уже всем экспертам): как использовать таймер в Delphi? Если можно, пожалуйста, небольшой пример.
И ещё. Мой знакомый взялся изучать C++. Только у него учебник рассчитан на тех, кто уже знает основы C/C++. Ну у него проблема с синтаксисом как я заметил. Дайте, пожалуйста, ссылочек на сайте с материалами для "чайников". А то я когда начинаю искать уходит много времени, а результата почти никакого, заметил за собой особенность такую. :)
Большое спасибо!!
С уважением,
Drahus.



Вопрос отправлен: 14.10.2003, 21:27
Отправитель: Drahus (drahus@yandex.ru)

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

Отвечает Boriss

Приветствую Вас, Drahus!
аймер использовать проблем нет:
1) помещаешь на форму компонент Timer с закладки System.
2) на страничке свойств изменешь Interval - через сколько вызывать процедуру - обработчик,
которая создается на (3)
3) щелкни два раза по значку таймера - появится процедура
procedure TForm1.Timer1Timer(Sender: TObject); - в ней пишешь код
-----
О С++
Есть даже рассылка-учебник:
C/C++. Уроки с сайта http://progs.biz


Ответ отправлен: 17.10.2003, 09:19
Отправитель: Boriss


Отвечает Bob Johnson

Доброе время суток, Drahus!
> а я же хочу сделать простенькую игрушку. Эдак не больше 1 Мб.
Размер сложности однозначно не определяет...
> как использовать таймер в Delphi?
Кидаешь таймер на форму, делаешь dbl-click в событии ontimer - создается процедура, которая будет вызываться с интервалом interval (в параметрах компонента) мс.
Также возможно создать компонент динамически и все это сделать уже в процессе выполнения программы.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.10.2003, 23:48
Отправитель: Bob Johnson


Отвечает sir henry

Приветствую Вас, Drahus!
Можно обойтись вообще без объектов :)). Просто создайте на форме Image и далее, через Image.Canvas можно будет рисовать и перерисовывать разные линии, круги, прямоугольники, дуги т.п. примитивы. Почти все графические команды перекочевали из Паскаля в Дельфи. Пример:
Canvas.TextOut() - выводит текст
Canvas.Arc() - рисует дугу
Canvas.MoveTo() - переходит куда надо :)
Canvas.Rectangle() - прямоугольник
Canvas.Brush.Color - задает цвет рисования фигур
(Brush - это кисть, которой рисуют фигуры, подчиненный объект в Canvas'е)
и т.д.
Сначала нужно попробовать написать что-нибудь на основе этих примитивов, а потом уже, освоившись с применением графических функций, переходить к созданию графических объектов и ГРАМОТНО описать их свойства и методы.

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


Отвечает samum2000

Добрый день, Drahus!
1. Всё очень просто: бросаешь не форму компонент Timer, в параметре Interval выставляешь интервал (в милисекундах), через который будет вызываться процедура, указанная на вкладке Events в OnTimer. Параметр enabled разрешает (True), или запрещает (False) срабатывание таймера. Подробные примеры есть в справке по Delphi.
2. Я предлагаю посмотреть здесь:
http://softs.h10.ru/literature.shtml?topic=cplus
Вообще, там много литературы не только по С/С++

Ответ отправлен: 16.10.2003, 11:05
Отправитель: samum2000


Отвечает Marouder

Приветствую Вас, Drahus!
Ну, Б.Страуструп "Введение в язык C++". Найти можно почти везде - любой поисковик кучу ссылок выдаст.

Ответ отправлен: 17.10.2003, 08:19
Отправитель: Marouder


Отвечает CJ

Здравствуйте, Drahus!
А какой таб ты имел в виду?

Ответ отправлен: 15.10.2003, 14:52
Отправитель: CJ


Отвечает Jact M Anchorite

Здравствуйте, Drahus!
Я, к примеру, таймер использую так:
Для начала задаешь таймеру время задержки (в мс) и ставишь enabled:=false. Затем там, где ты хочешь вызвать таймер пишешь timer1.enabled:=true;
В самом обработчике таймера можешь сделать так (если, например, надо выполнить какой-нибудь код N раз (при условии, что N - переменная глобальная):
...... (*Некий код*)
inc(Tag); (*Инкрементируем счетчик (все равно что Tag:=Tag+1), Tag - енто собственная переменная Таймера*)
if Tag=N then
begin
Tag:=0; (*На случай поввторного использования Таймера*)
timer1.enabled:=false; (*Вырубаем Таймер*)
end;

Ответ отправлен: 15.10.2003, 14:57
Отправитель: Jact M Anchorite


Отвечает THE_PRO

Доброе время суток, Drahus!
poprobuy ka
http://www.ansi.org

Ответ отправлен: 16.10.2003, 10:53
Отправитель: THE_PRO


Отвечает Cybernetic Creature

Добрый день, Drahus!
procedure TForm.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=TimeToStr(Time)
end;

Ответ отправлен: 15.10.2003, 17:38
Отправитель: Cybernetic Creature


 Вопрос № 1027

Уважаемые эксперты!
Подскажите пожалуйста, как в Delphi создавать фигурные формы.
С уважением,
Somebody



Вопрос отправлен: 15.10.2003, 01:00
Отправитель: Somebody

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

Отвечает CJ

Доброе время суток, Somebody!
Есть спец. компоненты!
Есть процедуры!
Напиши мне на karatetski@tut.by!
И я те вышлю компонент!

Приложение:

Ответ отправлен: 15.10.2003, 14:52
Отправитель: CJ


Отвечает Jact M Anchorite

Доброе время суток, Somebody!
Самый простой способ - использовать наборы компонентов типа
1st class или LMD-tools


Ответ отправлен: 15.10.2003, 14:57
Отправитель: Jact M Anchorite


Отвечает Cybernetic Creature

Приветствую Вас, Somebody!
SetWindowRGN
procedure TFormShape.SetShapeType(Value: TShapeType);
var R:HWND;
begin
FShapeType:=Value;
case FShapeType of
stRectangle:begin
R:=CreateRectRgn(0,0,Screen.Width,Screen.Height);
SetWindowRgn(FForm.Handle,R,True);
end;
stSquare:begin
if FForm.Height else FForm.Height:=FForm.Width;
R:=CreateRectRgn(0,0,Screen.Height,Screen.Height);
SetWindowRgn(FForm.Handle,R,True);
end;
stRoundRect:begin
R:=CreateRoundRectRgn(0,0,Screen.Width,Screen.Height,20,30);
SetWindowRgn(FForm.Handle,R,True);
end;
stRoundSquare:begin
if FForm.Height else FForm.Height:=FForm.Width;
R:=CreateRoundRectRgn(0,0,Screen.Height,Screen.Height,30,30);
SetWindowRgn(FForm.Handle,R,True);
end;
stEllipse:begin
R:=CreateEllipticRgn(0,0,Screen.Width div 2,Screen.Height div 2);
SetWindowRgn(FForm.Handle,R,True);
end;
stCircle:begin
if FForm.Height else FForm.Height:=FForm.Width;
R:=CreateEllipticRgn(0,0,Screen.Height div 2,Screen.Height div 2);
SetWindowRgn(FForm.Handle,R,True);
end;
end;
end;


Ответ отправлен: 15.10.2003, 17:38
Отправитель: Cybernetic Creature


 Вопрос № 1028

Привет эксперты!
Мне тут прогу надо делать. Она должна полностью определять установленное в компе железо. Идеально для этого подошла новая версия компонента MiTeC System Information Component. Все бы хорошо, да нет же! Надо было в компонент включить Splash картинку :( Старые версии компонента не установились или не работают...
Кто-нить знает как вырезать splash или где найти крек, а может быть и альтернативу компоненту?
Заранее благодарен!



Вопрос отправлен: 15.10.2003, 09:34
Отправитель: maDByte

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

Отвечает sir henry

Добрый день, maDByte!
Покопайтесь тут:
http://www.delphimaster.ru/download/
очень много компонентов с кратким описанием на русском языке.

Ответ отправлен: 15.10.2003, 10:11
Отправитель: sir henry


Отвечает _vt

Доброе время суток, maDByte!
Могу предложить альтернативу: написать самому... Ничего сложного нету, а будут вопросы - обращайся...

*** E-Man - we are waiting for you ***


Ответ отправлен: 15.10.2003, 21:25
Отправитель: _vt


 Вопрос № 1029

Здравствуйте уважаемые эксперты!
Я насчет трёх вопросов (№1020) по Delphi 7:
Специально для Cybernetic Creature:
Я спрашивал, как производить запись и чтение данных с LPT-порта (378h) в WinXP, а в там закрыт доступ у портам I/O (поэтому Ваш способ здесь не проходит: ошибка - access violation), значит надо работать с файлом "LPT1", а как именно производить запись и чтение переменной wWord: Word; в этот файл.
Специально для THE_PRO;
>> Rabotay s zaqolovkami, ili je MIME,
Так как его туда приаттачить, используя заголовки или MIME?
>> Tolko yesli etoto user zaregistrirovan na etom servake!
За это спасибо!
Заранее благодарен.



Вопрос отправлен: 15.10.2003, 11:22
Отправитель: ShurA (shura_com@mail.ru)

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

Отвечает Bob Johnson

Приветствую Вас, ShurA!
По поводу аттача файла - один из вариантов - закодируй его в UUE (Unix to Unix Encode), затем просто добавь в текст письма. Получится что-то вроде
begin 666 myfile
...

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 17.10.2003, 21:54
Отправитель: Bob Johnson


Отвечает Jact M Anchorite

Приветствую Вас, ShurA!
Зачем с файлом? Юзай API-функции.


Ответ отправлен: 15.10.2003, 14:57
Отправитель: Jact M Anchorite


Отвечает sir henry

Здравствуйте, ShurA!
Попробуйте открыть порт функцией Handle=OpenComm('LPT1').
Сделать установки порта можно связкой GetCommState(), а потом, на основе полученой информации о порте, поменять то что нужно и проинициализировать порт функцией SetCommState(). Дальше можно работать с портом как с обычным файлом.

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


Отвечает Cybernetic Creature

Здравствуйте, ShurA!
a u mneya eto procedura rabotala
ne znayu pochemu ti sney ne spravilsa

Ответ отправлен: 15.10.2003, 17:39
Отправитель: Cybernetic Creature


 Вопрос № 1030

привет эксперты.
вопрос такой:
принажатии на кнопку - открывается документ word и редактируется,
при повторном нажатии на кнопку, должен открываться тот же документ, но возникает ошибка.
как мне это исправить?
где мне можно найти литературу по взаимодействию с приложением microsoft word ?
спасибо


Приложение:


Вопрос отправлен: 15.10.2003, 18:05
Отправитель: евгений (zharkov_evgenii@mail.ru)

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

Отвечает Vdr

Здравствуйте, евгений!
Возможно, проблема в том, что Word сам контролирует, чтобы несколько человек не открывали один файл (либо ReadOnly либо никак).
Удачи!

Ответ отправлен: 17.10.2003, 12:57
Отправитель: Vdr


Отвечает sir henry

Здравствуйте, евгений!
Какая возникает ошибка?
Может быть, прежде чем открывать документ второй раз, его надо сначала закрыть? :))


Ответ отправлен: 16.10.2003, 09:18
Отправитель: sir henry


Отвечает Boriss

Доброе время суток, евгений!
У тебя осталось соединение. Поэтому и ошибка. Нужно рвать
WordApplication1.Connect;
WordApplication1.Visible:=True;
WordApplication1.Disconnect


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



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (30)
C / C++ (31)
Perl (7)
Builder / Delphi (23)
Pascal (24)
Basic / VBA (8)
Java / JavaScript (9)
PHP (12)
Криптография (9)
WinAPI (15)
Пользователю
Windows 95/98/Me (53)
Windows NT/2000/XP (63)
"Железо" (38)
Поиск информации (26)
Администратору
Windows NT/2000/XP (38)
Linux / Unix (17)
Юристу
Гражданское право (11)
Семейное право (8)
Трудовое право (8)
КоАП (8)

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




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


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

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

В избранное