Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 79 из 116<  1 ... 76  77  78  79  80  81  82 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 05.01.2005
Максим
_SGK писал(а):
Ему чуть другое нужно, как я понял. Типа клиент-сервер считывание и запись из файлов.

Да я понял, что ему надо.
Но чтобы так сделать, нужно чтобы и в той программе что пишет и в той, что читает, было изначально это реализовано.
А если у него чужой exe, то это значит, что посетил Отсос Петрович. ;)
Относительно:
Максим писал(а):
Правда тут сразу есть мини проблема - нужно сделать так, чтобы эта dll была одной в памяти, а вот это не знаю как под Дельфей реализуемо.

Вот - можешь собрать и погонять.
DLL
1. DemoMmf.dpr
Код:
library DemoMmf;

uses
  SysUtils,Classes, MmfUtl in 'MmfUtl.pas';

exports
  GetValue, SetValue;
end.

2. MmfUtl.pas
Код:
unit MmfUtl;

interface

uses
  Windows, SysUtils;

function GetValue: Integer; stdcall;
procedure SetValue(I: Integer); stdcall;

implementation

var
  Handle: THandle;
  Value: ^Integer;

function GetValue: Integer;
begin
  Result:= Value^;
end;

procedure SetValue(I: Integer);
begin
  Value^:= I;
end;

initialization
  Handle:= CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(Integer), 'bla-bla-bla_Demo');
  if Handle = 0 then raise Exception.Create('Проблема, однако, с созданием...');
  Value:= MapViewOfFile(Handle, FILE_MAP_WRITE, 0, 0, SizeOf(Integer));
finalization
  UnmapViewOfFile(Value);
  CloseHandle(Handle);
end.


EXE
Код:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin;

type
  TForm1 = class(TForm)
    btnGet: TButton;
    btnSet: TButton;
    Label1: TLabel;
    SpinEdit1: TSpinEdit;
    procedure btnGetClick(Sender: TObject);
    procedure btnSetClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetValue: Integer; stdcall; external 'DemoMmf.dll';
procedure SetValue(I: Integer); stdcall; external 'DemoMmf.dll';

procedure TForm1.btnGetClick(Sender: TObject);
begin
  Label1.Caption:= IntToStr(GetValue);
  SpinEdit1.Value:= StrToInt(Label1.Caption);
end;

procedure TForm1.btnSetClick(Sender: TObject);
begin
  SetValue(StrToIntDef(SpinEdit1.Text, 0));
  BtnGet.Click;
end;

Бросить на форму контролы из объявлений, скопировать код в обработчики, откомпилировать и наслаждаться.
Запускаешь нескольких копий, в одной в SpinEdit меняешь значение, устанавливаешь его кнопочкой BtnSet, а в других запущенных экземплярах топчешь кнопочку BtnGet и смотришь результат.
Примерчик простенький, но суть отображает.



Партнер
 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
_SGK
Ну да, такую идею я и предлагал. Только предлагал без мапирования. А ты уверен, что мастдай будет загружать эти dll в одну и ту же ячейку памяти - просто в свое время уже натыкался, что то второй раз не грузит в память, а через некоторое время может создать дополнительную копию в памяти.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
Максим
Максим писал(а):
А ты уверен, что мастдай будет загружать эти dll в одну и ту же ячейку памяти

Добавь код и сравни адреса функций в памяти для нескольких запушенных экземпляров.
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Handle: THandle;
begin
  Handle:= LoadLibrary('DemoMmf.dll');
  Form1.Caption:=  Format('Чтение - адрес в памяти: %P', [GetProcAddress (Handle, 'GetValue')]) + ', ' + Format('Запись - адрес в памяти: %P', [GetProcAddress (Handle, 'SetValue')]);
  FreeLibrary(Handle);
end;


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
_SGK
:) Ну да, типа того. Только это ты не мне говори, если мне нужно будет, я и по другому привяжусь только к первой копии длл в памяти. Причем оказывается та же самая вещь, что когда то была доступна, в С++ 5.02, так же доступна и в Дельфях (ну чтоб длл после первой загрузки не выгружалась из памяти).

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Давненько не заглядывал. В универе загрузили и сессия скоро... Щас вот снова решил повозиться.
_SGK писал(а):
Создай два звука сразу под конкретного человека (его скорость) в двух экземплярах TMemoryStream, а потом просто проигрывай нужный, с помощью sndPlaySound.

А как? Я попробовал создвать TMemoryStream, и проигрывать с помощью sndPlaySound из специальной отдельной процедуры, но видимо неправильно сделал: прога виснет. А эконмия времени должна получиться :) .


 

Member
Статус: Не в сети
Регистрация: 11.07.2004
Откуда: Воронеж
как получить список всех зарезервированных слов?

_________________
Удачи и мудрости.


 

Member
Статус: Не в сети
Регистрация: 08.12.2005
Откуда: Smolensk
Здравствуйте ...
Так как скоро сессия (:) ) не могли бы вы помочь в решении задачки:
Нужно обьеденить два отсортированных (программа внизу) одномерных массива (через процедуры) и затем его отсортировать (это я думаю сам смогу сделать, главное объеденить) ...
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    Label1: TLabel;
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,m,k,j,b,a:integer;
implementation

{$R *.dfm}

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
close;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var u:integer;
begin
  for i:=0 to 9 do
  begin
    u:=random(50)-25;
    StringGrid1.cells[i,0]:=inttostr(u);
    StringGrid1.cells[i,1]:='';
end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
m:=9;
for i:=0 to 9 do
begin
StringGrid1.cells[i,1]:=StringGrid1.cells[i,0];
end;
for i:=0 to m-1 do
  begin
    k:=i;
    for j:=i+1 to m do
    if strtoint(StringGrid1.cells[j,1])<strtoint(StringGrid1.cells[k,1])
    then k:=j;
    if k>1 then
    begin
    a:= strtoint(StringGrid1.cells[i,1]);
    StringGrid1.cells[i,1]:=StringGrid1.cells[k,1];
    StringGrid1.cells[k,1]:=inttostr(a);
    end;
    end;
    end;




procedure TForm1.BitBtn3Click(Sender: TObject);
begin
m:=9;
for i:=0 to 9 do
begin
StringGrid1.cells[i,2]:=StringGrid1.cells[i,0];
end;
for i:=1 to m do
BEGIN
  for j:=1 to m-1 do
  if strtoint(StringGrid1.cells[j,2])>strtoint(StringGrid1.cells[i,2]) then
    begin
      a:=strtoint(StringGrid1.cells[i,2]);
      StringGrid1.cells[i,2]:=StringGrid1.cells[j,2];
      StringGrid1.cells[j,2]:=inttostr(a);
      end;
      end;
    end;



end.

_________________
Вам может показаться, что я повторяюсь, но я буду распоряжаться вашими жизнями, как мне вздумается. Постарайтесь этого не забывать...
|Клан Дедов|


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
Rev@n
Тебе полегче или потяжелее? ;)
А так, куда сохранять объединенный массив. Если можно сохранять в StringGrid, то что тебе мешает написать к примеру так.
Код:
m := 9;
for i:=0 to 9 do
begin
StringGrid1.cells[i,3]:=StringGrid1.cells[i,1];
StringGrid1.cells[i+M+1,3]:=StringGrid1.cells[i,2];
end;

Вот и скопируешь свои массивы :)
Только я не совсем понимаю задание - зачем вообще это нужно в итоге? У тебя получиться массив, где каждый нечетный элемент задублирован с каждым следующим четным (ну после уже последующей сортировки)

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 08.12.2005
Откуда: Smolensk
О, спасибочки :beer: ...
Максим писал(а):
У тебя получиться массив, где каждый нечетный элемент задублирован с каждым следующим четным (ну после уже последующей сортировки)

Да все-равно что получиться главное показать, что они объединены - защита лабы ... ;)

_________________
Вам может показаться, что я повторяюсь, но я буду распоряжаться вашими жизнями, как мне вздумается. Постарайтесь этого не забывать...
|Клан Дедов|


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
vis11
vis11 писал(а):
Я попробовал создвать TMemoryStream, и проигрывать с помощью sndPlaySound из специальной отдельной процедуры, но видимо неправильно сделал: прога виснет.

Видимо да. :)
Попробуй так:
Код:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MMSystem, gkgSndUtl, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    msP: TMemoryStream; // Для точки
    msD: TMemoryStream; // Для тире
    sndDFP: Longword; // Продолжительности звучания для точки
    sndFrequency, sndVolume: Integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  msP:= TMemoryStream.Create;
  msD:= TMemoryStream.Create;
  sndFrequency:= 1000;
  sndVolume:= 85;
  sndDFP:= 50;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  msD.Free;
  msP.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  msP.Clear; // Перед созданием нового звука обязательно очистить
             // или добавить в gkgSndUtl, сразу после begin сточку: MS.Clear;
  SndCreate(msP, sndFrequency, sndDFP, sndVolume); // Создаем звук для точки.
  msD.Clear; // Перед созданием нового звука обязательно очистить.
  SndCreate(msD, sndFrequency, sndDFP * 3, sndVolume); // Создаем звук для тире.
// Начало передачи ;)
  SndPlay(msD);  // тире
  Sleep(sndDFP); // пауза
  SndPlay(msP);  // точка
  Sleep(sndDFP);
  SndPlay(msP);
  Sleep(sndDFP);
  SndPlay(msD);
  Sleep(sndDFP);
  SndPlay(msD);
  Sleep(sndDFP);
  SndPlay(msP);
end;

Я смотрел из любопытства одну прогу, дык там обработка была реализована посимвольно :) – нажал клавишу, прога пропищала что надо.
Но если ты хочешь большую точность, то ИМХО нужно обрабатывать сразу предложение.
К примеру, ввел чупс: привеД медвеД. :)
Ты должен всю строку разобрать на последовательность команд (точек, пауз, тире), помещая все это дело, к примеру, в список, а потом проиграть весь список команд одним махом.
Ессно продолжительность тире и пауз рассчитывать от продолжительности звучания точки.


 

Благодарю. Я применил к первому варианту, разобрался что к чему. Теперь точка и тире создаются 1 раз. Там я заколебался с размножившимися процедурами и сделал большинство переменных глобальными :) . Теперь пахает получше. Как вот только в старый вариант проги добавлять паузу в TMemoryStream? Так как не хочу
_SGK писал(а):
весь список команд одним махом.
,
а хочу к созданным точке и тире "прилепить" паузы в конец, может поточнее будет.


 

Member
Статус: Не в сети
Регистрация: 21.12.2006
Откуда: Воронеж
Здарова народ))) Кто нидь работал с модулем RegExpr? Мне нужно сделать выделять {} скобки, но тока в них всегда че то есть(текст или цифры). Вроде при описании регулярного выражения любой символ это ".", но она почему то не работает? Мож кто сталкивался с такой проблемой?

_________________
HOMO HOMINI LUPUS EST!


 

Member
Статус: Не в сети
Регистрация: 24.12.2004
Откуда: Ставрополье
Посоветуйте компоненты для придания прогам красивого внешнего вида
Добавлено спустя 2 минуты, 53 секунды
Посоветуйте компоненты для придания прогам красивого внешнего вида

_________________
Ставрополье Оверклокерс http://forums.overclockers.ru/viewtopic.php?t=125746
-= World Of Tanks =- (для связи Ватс Ап +7-903-418-03-43)


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
FatumNNM
А например какого вида? Если хочется под виндовоз с его скинами, то можно с помощью одного встроенного компонента в Дельфи (начиная с седьмой) придать вид виндовоза, а если хочется чего-то более другого, то или рисуй сам, либо пользуй скинпаки всякие. Мне например нравиться DynamicSkinForm

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 24.12.2004
Откуда: Ставрополье
Максим хочеться красивые эффекты добавить в прогу, например как в офисе 2003

_________________
Ставрополье Оверклокерс http://forums.overclockers.ru/viewtopic.php?t=125746
-= World Of Tanks =- (для связи Ватс Ап +7-903-418-03-43)


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
FatumNNM
НУ гм, тады тебе просто каждый такой эффект придется искать.
Для меню - одни компоненты, для скинов другие. Чтоб полностью совмещенные были - гм, не знаю наверное таких.
Просто красивые менюшки - ну в том же DynamicSkinForm есть, но чтоб еще с эффектами - не видел.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
FatumNNM
FatumNNM писал(а):
Максим хочеться красивые эффекты добавить в прогу, например как в офисе 2003

Максим
Максим писал(а):
НУ гм, тады тебе просто каждый такой эффект придется искать.

Гы, ну вы - мужики даете...
Используются: TActionManager, TActionMainMenuBar и TActionToolBar.
Соответственно для ActionManager свойство Style установить в XPStyle.
Для ActionMainMenuBar смотреть свойства AnimateDuration и AnimationStyle.
Прямо в Demos примеры лежат: Demos\ ActionBands. ;)


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
_SGK
Хи, видимо не пользовался такой вещью, вот и не знаю. Мне подавай что-нибудь покруче. :)
Например:
#77

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 24.12.2004
Откуда: Ставрополье
Максим и _SGK Благодарю. Не подскажете сайт с компонентами с компонентами для сабжа ?

_________________
Ставрополье Оверклокерс http://forums.overclockers.ru/viewtopic.php?t=125746
-= World Of Tanks =- (для связи Ватс Ап +7-903-418-03-43)


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
FatumNNM
Ссылки на сайт нету, а если бы и была, то не мог бы дать по правилам сайта. Обращайся в личку или по мылу - поговорим

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 79 из 116<  1 ... 76  77  78  79  80  81  82 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan