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
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
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
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||