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

СообЧА. Программирование на Delphi


Служба Рассылок Subscribe.Ru
Subscribe.Ru :СообЧа программирование на дельфи !
—Сообча : программирование на дельфи

Некому оформить сайт ?
Нужен красивый баннер ?
Нет времени на обновление сайта?

Качественное оформление, работа с самыми современными средствами, FLASH,CGI,JAVA
Тогда вам сюда !!!!
Менее чем за 50$ мы поможем


----- (перед просмотром рассылку лучше сохранить)

 

 В этом выпуске:

Внимание , всвязи с командировкой автора рассылка не будит ходить ближайшие 2-3 недели. Почта, так же не обрабатывается, спасибо . Извините за неудобства.

Фонд поддержки наших проектов и рассылки:
Получатель: ИНН 7707083893 Новгородское ОСБ № 8629
Счет получателя: 47422810343029900030
Банк получателя
:Новгородское ОСБ № 8629 г.Великий Новгород 30101810100000000698 Бик 044959698

Храпунову Кириллу Алексеевичу

! желающим помочь рассылке


Рассылки Subscribe.Ru это стильно удобно, и информативно!
СообЧа (СООБщество ЧАйников). Обмен опытом, вопросы, ответы.


подпишись и подпиши друга!!!!

 Contact (Связь с Нами):

Pixel@novgorod.net + Subject: (см ниже)

 

Vcl Haunting

"Золотой Чайник"

Вопрос по дельфи N (N номер версии)

Help!

Реклама

Полезный линк

 

Наш сайт : pixelsoft.narod.ru

Новости СЕТИ

К заголовку

Кстати, узнал подробности про конструктор 3Д игр(КУПИЛ!!!),в сетке эта вещь называется 3D gamemaker и является производной от некогда популярного, языка-движка DarkBasic. Как написано на самом сайте , диск базируется для "Very Beginners of gamemaking" и создать свою игру вы можете с помощю Step-by-Step Wizarda.

Краткие характеристики этого движка/программы:

-----Вырезка с оффициального сайта
*Instant and amazing results in seconds.
*Random Game Option - let your computer create a
*uniquely playable game for you with just one click
of the mouse.
*Create a variety of exciting game scenarios with over
*360 pre-made scenes.
*Over 500 3D objects.
*Over 320 Sounds.
*Add personalised sound effects to games.
*Entirely customisable - utilise or scan in your
own images.
*Import your own 3D models.
*Download FREE objects from the
official website.
*Save games as exe files to share
with your friends.
*Swap games via disk or via the net with
other users.
*Place enemies, objects and items where you
want to with the Placement Editor.
----

Если вы хотите узнать больше, и увидеть скриншоты, вот оффициальный сайт
Если полученная вами информация достаточна, то вы можете купить этот диск(144 руб без учета доставки)
P.s У буржуев этот диск по 20 зеленых стоит :)...

 

Книги по Дельфи которые ВЫ ОБЯЗАНЫ ПРОЧИТАТЬ...

Не столько учебник, сколько справочное пособие по наиболее используемым алгоритмам и командам...

Пожалуй лучший учебник по дельфи 6 на сегодняшний день, вам даже не надо знать дельфи, чтобы начать ...

  • Дельфи 5: Руководство разработчика БД
  •  

    DirectX. Графика в проектах Delphi (+CD - ROM)
    Лучшее пособие для тех кто решил связаться с DirectX, по слухам на CD помимо примеров есть DirectxSDK7.0 от Microsoft...

    Среда программирования Delphi 5-6. Справочное пособие
    Книга полностью описывает среду программирования Delphi, которая включает в себя полный набор визуальных инструментов для быстрой и профессиональной разработки приложений для различных операционных систем, кроме того рассмотрены проблемы перехода между этими версиями дельфи.

    Программирование в Delphi 6 (+ floppy дискета ) Чайникам рекомендуется!!!

    Книга содержит методические и справочные материалы по новой версии системы визуального объектно-ориентированного программирования Delphi 6 и предшествующим версиям Delphi 5 и 4. Рассмотрены такие новые возможности Delphi, как кросс-платформенные приложения, технологии доступа к данным ADO, InterBase Express, dbExpress, компоненты — серверы СОМ, технологии распределенных приложений СОМ, CORBA, MIDAS, новая методика диспетчеризации действий...

 

На закуску :FAQ... (Итоги)

К заголовку

Перезапуск своей программы

procedure TForm1.Button1Click(Sender: TObject);
var
FullProgPath: PChar;
begin
FullProgPath := PChar(Application.ExeName);
// ShowWindow(Form1.handle,SW_HIDE);
WinExec(FullProgPath, SW_SHOW); // Or better use the CreateProcess function
Application.Terminate; // or: Close;
end;

Каким образом, программным путем, можно узнать о завершении запущенной программы?

16-битная версия:


--------------------------------------------------------------------------------
uses Wintypes,WinProcs,Toolhelp,Classes,Forms;

Function WinExecAndWait(Path : string; Visibility : word) : word;
var
InstanceID : THandle;
PathLen : integer;
begin
{ Преобразуем строку в тип PChar }

PathLen := Length(Path);
Move(Path[1],Path[0],PathLen);
Path[PathLen] := #00;
{ Пытаемся запустить приложение }

InstanceID := WinExec(@Path,Visibility);
if InstanceID < 32 then { значение меньше 32 указывает на ошибку приложения }
WinExecAndWait := InstanceID


else begin
Repeat
Application.ProcessMessages;
until Application.Terminated or (GetModuleUsage(InstanceID) = 0);
WinExecAndWait := 32;
end;
end;


32-битная версия:


--------------------------------------------------------------------------------
function WinExecAndWait32(FileName:String; Visibility : integer):integer;
var

zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin

StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);


StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { указатель командной строки }
nil, { указатель на процесс атрибутов безопасности }
nil, { указатель на поток атрибутов безопасности }
false, { флаг родительского обработчика }
CREATE_NEW_CONSOLE or { флаг создания }
NORMAL_PRIORITY_CLASS,
nil, { указатель на новую среду процесса }
nil, { указатель на имя текущей директории }
StartupInfo, { указатель на STARTUPINFO }
ProcessInfo) then Result := -1 { указатель на PROCESS_INF }


else begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;

Простой пример DLL
library MyDll;


uses
Windows;


function SomeFunc(I: Integer): Integer; stdcall;
begin
if Odd(I) then Result := 3 * I + 1
else Result := I div 2;
end;


exports
SomeFunc;


begin
end.

И вот модуль импорта, который вы можете включить в любой проект, которому необходим доступ к функциям DLL:

--------------------------------------------------------------------------------
unit MyDllImport;


interface


uses
Windows;


function SomeFunc(I: Integer): Integer; stdcall;


implementation


function SomeFunc; external 'mydll.dll';


end.

Как DLL правильно заполнить строковыми ресурсами, и потом достать их?
Делаешь текстовый файл с ресурсами, типа

--my.rc--
STRINGTABLE
{
00001, "My String #1"
00002, "My String #2"
}
Далее компилируешь его:
brcc32 my.rc
У тебя получится my.res.
Делаешь DLL:

--my.dpr--

--------------------------------------------------------------------------------
library my;
{$R my.res}
begin
end.

Компилируешь Дельфиским компилятором:

dcc32 my.dpr
Получаешь, наконец-то свою my.dll
Теперь о том, как использовать.

В своей программе:

--------------------------------------------------------------------------------
var

h : THandle;
S: array [0..255] of Char;
begin

h := LoadLibrary('MY.DLL');
if h <= 0 then ShowMessage('Bad Dll Load')
else
begin
SetLength(S, 512);
LoadString(h, 1, @S, 255);
FreeLibrary(h);
end;
end;


 

 

Алгоритм переноса по слогам

К заголовку

unit Hyper;

interface

uses

Windows,Classes,SysUtils;

Function SetHyph(pc:PChar;MaxSize:Integer):PChar;
Function SetHyphString(s : String):String;
Function MayBeHyph(p:PChar;pos:Integer):Boolean;

implementation


Type

TSymbol=(st_Empty,st_NoDefined,st_Glas,st_Sogl,st_Spec);
TSymbAR=array [0..1000] of TSymbol;
PSymbAr=^TSymbAr;

Const

HypSymb=#$1F;


Spaces=[' ', ',',';', ':','.','?','!','/', #10, #13 ];


GlasCHAR=['Й', 'й', 'У', 'у', 'Е', 'е','Ю', 'ю', 'А', 'а', 'О', 'о',
'Э', 'э', 'Я', 'я', 'И', 'и',
{ english }
'e', 'E', 'u', 'U','i', 'I', 'o', 'O', 'a', 'A', 'j', 'J' ];


SoglChar=['Г', 'г' , 'Ц', 'ц' ,'К', 'к' , 'Н', 'н' , 'Ш', 'ш' , 'щ', 'Щ' ,
'З', 'з' , 'Х', 'х' ,'Ф', 'ф' , 'В', 'в' , 'П', 'п' , 'Р', 'р' ,
'Л', 'л' , 'Д', 'д' ,'Ж', 'ж' , 'Ч', 'ч' , 'С', 'с' , 'М', 'м' ,
'т', 'T' , 'б', 'Б' ,
{ english }
'q', 'Q','w', 'W', 'r', 'R','t', 'T','y', 'Y','p', 'P','s','S',
'd', 'D','f', 'F', 'g', 'G','h', 'H','k', 'K','l', 'L','z','Z',
'x', 'X','c', 'C', 'v', 'V', 'b', 'B', 'n', 'N','m', 'M' ];


SpecSign= [ 'Ы', 'ы','Ь', 'ь', 'Ъ', 'ъ'];

Function isSogl(c:Char):Boolean;
begin

Result:=c in SoglChar;
end;

Function isGlas(c:Char):Boolean;
begin

Result:=c in GlasChar;
end;

Function isSpecSign(c:Char):Boolean;
begin

Result:=c in SpecSign;
end;

Function GetSymbType(c:Char):TSymbol;
begin

if isSogl(c) then begin Result:=st_Sogl;exit;end;
if isGlas(c) then begin Result:=st_Glas;exit;end;
if isSpecSign(c) then begin Result:=st_Spec;exit;end;
Result:=st_NoDefined;
end;

Function isSlogMore(c:pSymbAr;start,len:Integer):Boolean;
var i:Integer;

glFlag:Boolean;
begin

glFlag:=false;
for i:=Start to Len-1 do
begin
if c^[i]=st_NoDefined then begin Result:=false;exit;end;
if (c^[i]=st_Glas)and((c^[i+1]<>st_Nodefined)or(i<>Start))
then
begin
Result:=True;
exit;
end;
end;
Result:=false;
end;


{ расставлялка переносов }
Function SetHyph(pc:PChar;MaxSize:Integer):PChar;
var

HypBuff : Pointer;
h : PSymbAr;
i : Integer;
len : Integer;
Cur : Integer; { Tекущая позиция в разультирующем массиве}
cw : Integer; { Номер буквы в слове}
Lock: Integer; { счетчик блокировок}
begin

Cur:=0;
len := StrLen(pc);
if (MaxSize=0)OR(Len=0) then
begin
Result:=nil;
Exit;
end;


GetMem(HypBuff,MaxSize);
GetMem(h,Len+1);
{ заполнение массива типов символов}
for i:=0 to len-1 do h^[i]:=GetSymbType(pc[i]);
{ собственно расстановка переносов}
cw:=0;
Lock:=0;
for i:=0 to Len-1 do
begin
PChar(HypBuff)[cur]:=PChar(pc)[i];Inc(Cur);


if i>=Len-2 then Continue;
if h^[i]=st_NoDefined then begin cw:=0;Continue;end else Inc(cw);
if Lock<>0 then begin Dec(Lock);Continue;end;
if cw<=1 then Continue;
if not(isSlogMore(h,i+1,len)) then Continue;

if
(h^[i]=st_Sogl)and(h^[i-1]=st_Glas)and(h^[i+1]=st_Sogl)and(h^[i+2]<>st_Spec)

then begin PChar(HypBuff)[cur]:=HypSymb;Inc(Cur);Lock:=1;end;


if
(h^[i]=st_Glas)and(h^[i-1]=st_Sogl)and(h^[i+1]=st_Sogl)and(h^[i+2]=st_Glas)

then begin PChar(HypBuff)[cur]:=HypSymb;Inc(Cur);Lock:=1;end;


if
(h^[i]=st_Glas)and(h^[i-1]=st_Sogl)and(h^[i+1]=st_Glas)and(h^[i+2]=st_Sogl)

then begin PChar(HypBuff)[cur]:=HypSymb;Inc(Cur);Lock:=1;end;


if (h^[i]=st_Spec) then begin
PChar(HypBuff)[cur]:=HypSymb;Inc(Cur);Lock:=1; end;


end;
{}
FreeMem(h,Len+1);
PChar(HypBuff)[cur]:=#0;
Result:=HypBuff;
end;

Function Red_GlasMore(p:Pchar;pos:Integer):Boolean;
begin

While p[pos]<>#0 do
begin
if p[pos] in Spaces then begin Result:=False; Exit; end;
if isGlas(p[pos]) then begin Result:=True; Exit; end;
Inc(pos);
end;
Result:=False;
end;

Function Red_SlogMore(p:Pchar;pos:Integer):Boolean;
Var BeSogl,BeGlas:Boolean;
begin

BeSogl:=False;
BeGlas:=False;
While p[pos]<>#0 do
begin
if p[pos] in Spaces then Break;
if Not BeGlas then BeGlas:=isGlas(p[pos]);
if Not BeSogl then BeSogl:=isSogl(p[pos]);
Inc(pos);
end;
Result:=BeGlas and BeSogl;
end;

Function MayBeHyph(p:PChar;pos:Integer):Boolean;
var i:Integer;

len:Integer;
begin

i:=pos;
Len:=StrLen(p);
Result:=
(Len>3)
AND
(i>2)
AND
(i<Len-2)
AND
(not (p[i] in Spaces))
AND
(not (p[i+1] in Spaces))
AND
(not (p[i-1] in Spaces))
AND
(
(isSogl(p[i])and isGlas(p[i-1])and isSogl(p[i+1])and
Red_SlogMore(p,i+1))

OR
((isGlas(p[i]))and(isSogl(p[i-1]))and(isSogl(p[i+1]))and(isGlas(p[i+2])))

OR
((isGlas(p[i]))and(isSogl(p[i-1]))and(isGlas(p[i+1])) and
Red_SlogMore(p,i+1) )

OR
((isSpecSign(p[i])))
);

end;

Function SetHyphString(s : String):String;
Var Res:PChar;
begin

Res:=SetHyph(PChar(S),Length(S)*2)
Result:=Res;
FreeMem(Res,Length(S)*2);
end;

end.


Zaluskiy Anton(COOLer)  и Khrapunov Kirill(Pixel)  - ведущие проекта    "Мир Delphi" (C) Pixelsoftware(Pixel)& Delphi 2000-2002(COOLer)


Озон! TopList SpyLOG RLE Banner Network
http://subscribe.ru/
E-mail: ask@subscrib
e.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

Another Banner Network

Another Banner Network



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

В избранное