Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58

Панель быстрого запуска, буфер обмена, путь до ресурсов и Ini

22.03.2015, 20:46. Показов 2407. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые. Рылся, рылся по форумам не нарыл ни чего и только запутался еще больше.
Делаем панель быстрого запуска. Создаем глобальную переменную, запускаем при открытии формы DragAcceptFiles(handle, true) (разрешаем Drag and Dron). Создаем процедуру перетягивания ярлыка приложения:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
CFileName: array[0..MAX_PATH] of Char;
//...
procedure TForm2.WmDropFiles(var Msg: TWMDropFiles);
var
 iconindex: word;
 icon: hicon;
    begin
      F:=CfileName; 
      Label1.Caption:=ExtractFileName(F);
      Msg.Result:=0;
    DragFinish(Msg.Drop);
  iconindex:=1;
  Image1.Picture.Icon.Handle:= ExtractAssociatedIcon(HInstance, Pchar(F), iconIndex);
  DrawIcon(Canvas.Handle,10,10,icon);
  end;
Создаем Ini-шник, прописываем на открытие и закрытие формы сохранение и запись параметров, НО! Как сохранить путь до иконки, чтобы на следующее открытие остались данные о перетянутых иконках и пути к файлам? Банальное ReadString('option', 'linc1', F) толку не дает. И не дает толку ReadString('option', 'linc1', CFileName).
Формулирую полностью вопрос: Как сохранить путь до иконки, чтобы на следующее открытие остались данные о перетянутых иконках и пути к файлам? Желательно конкретно, ибо я новичек в плане программирования (только учусь). Установлен на компе ХЕ7 на Вин7*64 Про (если нужна эта инфа).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2015, 20:46
Ответы с готовыми решениями:

Вернуть панель быстрого запуска и языковую панель (как в XP)
Добрый вечер. Если я возвращаю панель быстрого запуска и языковую панель на панель задач, то после перезагрузки у меня пропадает панель...

Панель быстрого запуска в Windows 7
Добрый день. до Win7 система позволяла добавлять ярлыки на панель задач. причем ярлыки не на приложения, а например ярлык на...

Панель быстрого запуска Windows 7
Подскажите пожалуйста,что можно сделать чтобы панель быстрого запуска постоянно не исчезала?Из за чего это может быть?

26
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
22.03.2015, 23:16
иконка никуда не сохраняется, она так в файле и лежит
так что сохраняем в ini имя этого файла, потом точно таким же способом как тут, достаем опять иконку

files.ini:
Code
1
2
3
4
[Files]
File1=C:\zzxx.exe
File2=D:\mmm.exe
File3=C:\11111.exe
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses iniFiles;
 
var Ini:TIniFile;
      L:TStringList;
 
 
L:=TStringList.Create;
try
  ini:=TIniFile.Create(extractFilePath(Paramstr(0)) + 'files.ini');
  ini.ReadSectionValues('Files',L);
  showMessage(l.values['File1']); /// C:\zzxx.exe
finally
  ini.free;
  l.free;
end;
Добавлено через 1 минуту
сохранение - аналогично
Заполняем StringList
L['File1']:=Filename1
...
L['FileN']=FilenameN

сохраняем
Delphi
1
ini.WriteSectionValues('Files',L);
1
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 08:22  [ТС]
А можно про сохранение секции поподробнее? На закрытие формы прописываю
Delphi
1
2
3
begin
ini.WriteSectionValues('Files',L);
end;
Ругается, что неизвестно WriteSectionValues
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
23.03.2015, 12:06
Цитата Сообщение от ventura69 Посмотреть сообщение
Ругается, что неизвестно WriteSectionValues
а откуда ты взял этот метод?

Добавлено через 1 минуту
ты хоть бы для приличия заглянул в класс и поискал там этот метод
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
TCustomIniFile = class(TObject)
  private
    FFileName: string;
  protected
    const SectionNameSeparator: string = '\';
    procedure InternalReadSections(const Section: string; Strings: TStrings;
      SubSectionNamesOnly, Recurse: Boolean); virtual;
  public
    constructor Create(const FileName: string);
    function SectionExists(const Section: string): Boolean;
    function ReadString(const Section, Ident, Default: string): string; virtual; abstract;
    procedure WriteString(const Section, Ident, Value: String); virtual; abstract;
    function ReadInteger(const Section, Ident: string; Default: Longint): Longint; virtual;
    procedure WriteInteger(const Section, Ident: string; Value: Longint); virtual;
    function ReadBool(const Section, Ident: string; Default: Boolean): Boolean; virtual;
    procedure WriteBool(const Section, Ident: string; Value: Boolean); virtual;
    function ReadBinaryStream(const Section, Name: string; Value: TStream): Integer; virtual;
    function ReadDate(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
    function ReadDateTime(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
    function ReadFloat(const Section, Name: string; Default: Double): Double; virtual;
    function ReadTime(const Section, Name: string; Default: TDateTime): TDateTime; virtual;
    procedure WriteBinaryStream(const Section, Name: string; Value: TStream); virtual;
    procedure WriteDate(const Section, Name: string; Value: TDateTime); virtual;
    procedure WriteDateTime(const Section, Name: string; Value: TDateTime); virtual;
    procedure WriteFloat(const Section, Name: string; Value: Double); virtual;
    procedure WriteTime(const Section, Name: string; Value: TDateTime); virtual;
    procedure ReadSection(const Section: string; Strings: TStrings); virtual; abstract;
    procedure ReadSections(Strings: TStrings); overload; virtual; abstract;
    procedure ReadSections(const Section: string; Strings: TStrings); overload; virtual;
    procedure ReadSubSections(const Section: string; Strings: TStrings; Recurse: Boolean = False); virtual;
    procedure ReadSectionValues(const Section: string; Strings: TStrings); virtual; abstract;
    procedure EraseSection(const Section: string); virtual; abstract;
    procedure DeleteKey(const Section, Ident: String); virtual; abstract;
    procedure UpdateFile; virtual; abstract;
    function ValueExists(const Section, Ident: string): Boolean; virtual;
    property FileName: string read FFileName;
  end;
0
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 12:27  [ТС]
Цитата Сообщение от DenNik Посмотреть сообщение
а откуда ты взял этот метод?

Добавлено через 1 минуту
ты хоть бы для приличия заглянул в класс и поискал там этот метод
Я и почитал. И не нашел, и не понял. Потому и прошу помощи в понятной мне форме. Можете подсказать, объяснить, дать полный пример, чтобы я разобрался? Если да, то - моя огромная благодарность Вам, в противном случае - не стоит (я думаю) загромождать форум перлами своей мудрости (попросту: пустословием)!
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
23.03.2015, 13:36
гут
сорри, забыл что обратного метода писать пачкой нет

вот пример
проверил
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 L:=TStringList.Create;
  ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini');
  ini.ReadSectionValues('Files',L);
  for i := 0 to L.Count-1 do
    l[i]:=l.ValueFromIndex[i];
  ini.free;
  L.Free;
 
  L:=TStringList.Create;
  L.Add('nnn.txt');
  L.Add('mmm.eee');
  ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini');
  ini.EraseSection('Files');
  for i := 0 to L.Count-1 do
    ini.writestring('Files','File'+Inttostr(i+1), l[i]);
  ini.free;
  L.Free;
1
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 16:17  [ТС]
Брр... А у меня опять не мурмулит. То есть на закрытие формы создает линки в инишнике, но на открытие формы теряет все записи. Вот полный кусок цикла. Гляньте, пожалуйста, где я накосячил.
В спойлер залезать не захотело, к сожалению.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ShellApi, Vcl.StdCtrls, Vcl.ExtCtrls, iniFiles;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    procedure OnCreate(Sender: TObject);
    procedure OnClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure WmDropFiles( var Msg: TWMDropFiles); message WM_DropFiles;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  CFileName: array[0..MAX_PATH] of Char; // Переменная с именем перетаскиваемого файла
   F: string;     //переменная для работы с ляблой
   i:integer;     //переменная для работы инишника
  Ini:TIniFile;  //подключаем создание инишника
  L:TStringList; // переменная строк
implementation
 
{$R *.dfm}
 
{ TForm1 }
 
procedure TForm1.OnClose(Sender: TObject; var Action: TCloseAction); //закрытие формы
begin
 L:=TStringList.Create;   //создаем лист
  L.Add(CFileName);      // добавляем строку о пути к файлу, для которого выводим ярлык
  ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini');  //создаем тело, положение и имя инишника
  ini.EraseSection('Files');                         //Удаляем заглавие из инишника
  for i := 0 to L.Count-1 do                       //создаем строку под данные
    ini.writestring('Files','File'+Inttostr(i+1), l[i]);  //записываем строку с путем до файла
  ini.free;                                                       //очищаем
  L.Free;                                                      
end;
 
procedure TForm1.OnCreate(Sender: TObject);         //создание формы
begin
 
L:=TStringList.Create;                    //аналогично верхнему блоку
 ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini');  
  ini.ReadSectionValues('Files',L);       //записываем из секции Files строку 
  for i := 0 to L.Count-1 do
    l[i]:=l.ValueFromIndex[i];
  ini.free;                                   //освобождаем процесс
  L.Free;
 DragAcceptFiles(handle, true); // Включаем режим Drag-and-drop
end;
 
procedure TForm1.WmDropFiles(var Msg: TWMDropFiles);      //процедура драг/дроп на форму
var
  icon: hicon; //Иконка файла
  iconindex: word;
begin
    if DragQueryFile(Msg.Drop,0, CfileName, Max_Path)> 0 then //Если перетащили файл
    begin
      F:=CfileName; // Конвертируем Array of Char -> String
      Label1.Caption:=ExtractFileName(F); // Получаем имя файла из его полного пути
      iconindex:=1;
  Image1.Picture.Icon.Handle:= ExtractAssociatedIcon(HInstance, Pchar(F), iconIndex);  //получаем путь до файла
  DrawIcon(Canvas.Handle,10,10,icon); //Рисуем картинку
  DragFinish(Msg.Drop); //Говорим что приняли файл
   end
   else                     //если файл не перетащили, то
  begin 
      F:=CfileName; // Конвертируем Array of Char -> String
      Label1.Caption:=ExtractFileName(F); // Получаем имя файла из его полного пути
      iconindex:=1;
  Image1.Picture.Icon.Handle:= ExtractAssociatedIcon(HInstance, Pchar(F), iconIndex);
  DrawIcon(Canvas.Handle,10,10,icon); //Рисуем картинку
  end;
 
 
end;
 
end.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
23.03.2015, 16:23
Цитата Сообщение от ventura69 Посмотреть сообщение
В спойлер залезать не захотело, к сожалению.
значит неправильно делал
[SPOILER][DELPHI]тут код[/DELPHI][/SPOILER]

Добавлено через 1 минуту
две кнопки нажимаешь - сначала спойлер, потом delphi. все само напишется
0
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 16:31  [ТС]
Так и сделал, но спойлер не разворачивался, потому спойлер убрал.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
23.03.2015, 16:35
Цитата Сообщение от ventura69 Посмотреть сообщение
но спойлер не разворачивался,
а это глюк сайта. нужно обновить страницу, и все заработает. у меня постоянно это случается
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
23.03.2015, 16:50
глобальные переменные лучше использовать для глобальных целей
когда работа Создал-Выполнил-Стер, нужно использовать локальные

приведенный код работает, конечно
но куда мы деваем полученные значения L ?
сейчас вот что:
создали L
прочитали L
стерли L
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,684
23.03.2015, 18:20
Цитата Сообщение от krapotkin Посмотреть сообщение
глобальные переменные лучше использовать для глобальных целей
когда работа Создал-Выполнил-Стер, нужно использовать локальные
советую тебе давать функции, сделанные максимально автономно. тогда и не будет возникать
Цитата Сообщение от ventura69 Посмотреть сообщение
Брр... А у меня опять не мурмулит.
вопросы-то, сам знаешь, кто тут задаёт.
0
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 19:27  [ТС]
Ну, не такой уж я и деревянный :-) Последний совет навел на мысль. Сейчас проверяю - кажется понял свою ошибку. Если получится: отпишусь с глубочайшим признанием, а если не получится: снова начну просить помощи... :-)

Добавлено через 1 час 3 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
глобальные переменные лучше использовать для глобальных целей
когда работа Создал-Выполнил-Стер, нужно использовать локальные

приведенный код работает, конечно
но куда мы деваем полученные значения L ?
сейчас вот что:
создали L
прочитали L
стерли L
Все же я деревянный... Изменил переменные на локальные, на открытие формы, после считывания L добавил сразу создание по переменной изображения, результат тот же. Нулевой. Косяк в моей конструкции где-то, а где - не могу понять. Дадите еще пару подсказок?
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,684
23.03.2015, 20:49
Цитата Сообщение от ventura69 Посмотреть сообщение
Дадите еще пару подсказок?
показывай.
0
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 21:41  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
показывай.
А что показывать? Вот с этого поста никаким макаром не могу из инишника создать ярлык на форме при открытии. Код в посте приведен полностью...
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,684
23.03.2015, 21:57
Цитата Сообщение от ventura69 Посмотреть сообщение
из инишника создать ярлык на форме при открытии
он для этого и не предназначен. а предназначен он для хранения информации. Так что формулируй задачу правильно, раздели её на независимые подпункты.
0
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
23.03.2015, 22:25  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
он для этого и не предназначен. а предназначен он для хранения информации. Так что формулируй задачу правильно, раздели её на независимые подпункты.
То есть? И как выглядит правильно сформулированная задача?
В инишнике лежит путь к файлу, ярлык которого должен появиться при открытии формы на имадже. Если пути нет в инишнике, то ничего не показываем в имадже. При запуске формы я получаю путь в локальную переменную из инишника (проверял через месседж-боксы: путь прописывается и считывается из инишника), но при попытке внедрить этот путь в цепочку создания иконки на имадже ( при открытии формы считываю путь из ини, закладываю в переменную и тут же пытаюсь строить иконку) вся система рушится и не фурычит.
Где я туплю?
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,684
23.03.2015, 22:40
Цитата Сообщение от ventura69 Посмотреть сообщение
То есть? И как выглядит правильно сформулированная задача?
В инишнике лежит путь к файлу, ярлык которого должен появиться при открытии формы на имадже. Если пути нет в инишнике, то ничего не показываем в имадже. При запуске формы я получаю путь в локальную переменную из инишника (проверял через месседж-боксы: путь прописывается и считывается из инишника), но при попытке внедрить этот путь в цепочку создания иконки на имадже ( при открытии формы считываю путь из ини, закладываю в переменную и тут же пытаюсь строить иконку) вся система рушится и не фурычит.
Где я туплю?
АААААААААА!!! не надо так, перестань! ты опять всё в кучу мешаешь.
попробуй вот такой способ формулировки:
1. научиться читать из ini и писать в ini список имён файлов, хранящихся в памяти моей программы; написать и отладить 2 соотв. функции с проверкой ошибок.
2. написать функцию загрузки картинки в TImage из файла, с проверкой ошибок. прототип:
Delphi
1
function ImageFromFile(const AFileName: string): boolean; // true в случае успеха
3. ...
4. ...
...
N. ...
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
23.03.2015, 22:56
если ты с того поста ничего не менял, то для чего тебе указывали на ошибки?
если менял, покажи, что теперь.

ГДЕ код, который, после считывания из ини, хоть где-то в программе сохраняет то, что прочитано?
"в том посте" после считывания списка файлов в L, L вообще уничтожается вместе со списком...
0
 Аватар для ventura69
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 58
24.03.2015, 11:31  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
если ты с того поста ничего не менял, то для чего тебе указывали на ошибки?
если менял, покажи, что теперь.

ГДЕ код, который, после считывания из ини, хоть где-то в программе сохраняет то, что прочитано?
"в том посте" после считывания списка файлов в L, L вообще уничтожается вместе со списком...
Уважаемый, не надо так нервничать! Это я должен нервничать из-за своей тупости.
После 6 подвешиваний системы моей дремучей тупостью получилось так:
На открытие формы пишем
Кликните здесь для просмотра всего текста
:
Подключаем модули IniFiles и ShellApi
глобальная переменная Settings: TINIFile;
Понеслось открытие формы
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.OnCreate(Sender: TObject);  //открываем форму
var
S: string; //локальная текстовая
icon: hicon; //Иконка файла
iconindex: word; //связь с внешним миром
begin
DragAcceptFiles(handle, true); // Включаем режим Drag-and-drop
Settings:=  TIniFile.Create(GetCurrentDir + '\config.ini');   // Создаем config.ini файл рядом с экзешником
F:= Settings.ReadString('Form', 'Linc', F); //считываем в переменную значение, ранее записанное в строку
if Length(F)>0 then      //если строка не нулевая, то
begin
showMessage(F); /// проверяем, что за путь у нас
Image1.Picture.Icon.Handle:= ExtractAssociatedIcon(HInstance, Pchar(F), iconIndex); //переводим строку в путь
  DrawIcon(Canvas.Handle,10,10,icon); //Рисуем картинку
  end;
end;                            //если путь пустой (первое создание ini), то выходим

На закрытие формы пишем:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
procedure TForm1.OnClose(Sender: TObject; var Action: TCloseAction);
begin
Settings.WriteString('Form', 'Linc', F); //забрасываем из глобальной переменной путь в ini
showMessage(F);                            // проверяем себя, какой путь у нас прописался
end;

Готов слушать критику и комментарии по более рациональной реализации

Добавлено через 2 минуты
Цитата Сообщение от Verevkin Посмотреть сообщение
АААААААААА!!! не надо так, перестань! ты опять всё в кучу мешаешь.
.
Проверьте, что получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2015, 11:31
Помогаю со студенческими работами здесь

Сделать из SideBar панель быстрого запуска
Хотелось бы, чтобы было так: работаешь в какой то приложеннии, надо запусть софтину, но не сворачивая окно этого приложения подводишь...

Панель быстрого запуска сползает вправо
Создана Панель быстрого запуска, как она была в Виндовс ХР, но она не хочет размещаться на своем месте слева. Мышкой ее можно...

Где в Windows 7 панель быстрого запуска?
всем привет Где в этой семёрке панель быстрого запуска в хр она есть я туда все ярлыки со стола убирал, не люблю когда стол захламлён ...

Внести свою программу на панель быстрого запуска
Доброго времени суток, хотелось бы узнать как можно закинуть программу на панель быстрого запуска, посоветуйте пожалуйста какое API тут...

Как добавить прогу в панель быстрого запуска?
как добавить прогу в панель быстрого запуска?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru