-
> Ну тады я тож не знаю. Пожоже ты один такой несчастливый. > На всяк случай выложи код с объявлением ресурса и загрузкой > курсора - мож чего увижу.
Значит так. Создаю файл "Cur.rc" такого содержания: #define BUSY 200
#define CUR 201
BUSY CURSOR "4.ani"
CUR CURSOR "5.cur" Файлы 4.ani (анимированый курсор) и 5.cur (простой курсор) присутствуют. Компилируется ресурс нормально. Код программы:
procedure TForm1.Button1Click(Sender: TObject);
var
h: Cardinal;
begin
h:= LoadCursor(hInstance, PChar(200));
if h = 0 then RaiseLastOSError;
Screen.Cursors[1]:= h;
Screen.Cursor:= 1;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
h: Cardinal;
begin
h:= LoadCursor(hInstance, PChar(201));
if h = 0 then RaiseLastOSError;
Screen.Cursors[2]:= h;
Screen.Cursor:= 2;
end; При нажатии на кнопку Button2 всё нормально - обычный курсор загружается, ошибок нет. При нажатии на кнопку Button1 вылетает: "System Error. Code: 1814. Указанное имя ресурса не найдено в файле образа."
-
Попробуй MAKEINTRESOURCE() вместо приведения к PChar. И посмотри размер скомпиленного ресурса - если он меньше суммарного размера .cur и .ani иконок, значит ресурс-компилер просто пропускает при построении реса этот .ani файл...
ЗЫ Ну уж не знаю чего у тебя там происходит 0_о
в первый раз в жизни такое получаю ©
-
> Попробуй MAKEINTRESOURCE() вместо приведения к PChar. И > посмотри размер скомпиленного ресурса - если он меньше суммарного > размера .cur и .ani иконок, значит ресурс-компилер просто > пропускает при построении реса этот .ani файл...
C MAKEINTRESOURCE() всё аналогично. Размер полученого .res-файла соответствующий.
Хотя, в принципе, ошибку выдаёт правильную "Указанное имя ресурса не найдено в файле образа.": в ресурсах ехе-файла в группе курсоров есть курсор 201, а 200-го нету. 200-ый лежит себе отдельным типом, а почему?
-
> 200-ый лежит себе отдельным типом, а почему? А вот потому что > Error Cur.rc 1 13: Invalid cursor format
Просто RC, вестимо (непонятно, правда, накой) маскирует ету проблему...
-
> 200-ый лежит себе отдельным типом, а почему?
Дык потому, что это и есть отдельный тип - анимированный курсор. Выложи куда-нить этот файл курсора, попробую с ним скомпилить.
-
> Дык потому, что это и есть отдельный тип - анимированный > курсор.Выложи куда-нить этот файл курсора, попробую с ним > скомпилить.
Да зачем выкладывать? Возьми любой .ani-файл (даже из папки винды) и попробуй с ним.
-
Когда-то подключал анимированный курсор из rc-файла, прописывал код: DARROW 21 darrow.ani Были аналогичные проблемы, если в рессурсах модуля присутствовал XP-манифест.
-
компилятор *.rc - файлов для дельфи отстаёт от микрософта, по этому -[26]
-
> Были аналогичные проблемы, если в рессурсах модуля присутствовал > XP-манифест.
Гм... и как узнать, есть ли там манифест?
> компилятор *.rc - файлов для дельфи отстаёт от микрософта, > по этому -[26]
Специально уже компилю через микрософтский rc.exe
-
> JetuS (14.01.08 11:28) [25]
> Да зачем выкладывать? Возьми любой .ani-файл (даже из папки > винды) и попробуй с ним.
С любым я уже пробовал - смотри ага (13.01.08 05:52) [17] Ну твои дела, как знаешь
-
> ALS (14.01.08 12:30) [26]
> Были аналогичные проблемы, если в рессурсах модуля присутствовал > XP-манифест.
А у меня почему-то и с манифестом никаких проблем
-
> С любым я уже пробовал - смотри ага (13.01.08 05:52) [17] > Ну твои дела, как знаешь
Гм... Ну, раз у тебя всё получается, то выложи куда-нибудь архив с проектом (с ехе-шником, rc и res-файлами), а ещё лучше - отправь на jetuso@gmail.com, буду тебе очень благодарен.
-
Да я бы отправил, да только твой сервак не хочет принимать архив с экзешником.
-
> Да я бы отправил, да только твой сервак не хочет принимать > архив с экзешником.
Запакуй rar-ом, тогда ругаться не будет. А если лень, то кинь на jetus@rambler.ru :)
-
Дык я и так паковал - в ZIP, не приниало. Надо было попробовать ахиву расширение заменить, чет не сообразил с недосыпу:)) На рэмблер вроде ушло.
-
> На рэмблер вроде ушло.
Спасибо, пришло ) Действительно, ехе-шник рабочий. А вот с кодом я чего-то не понял: модуль оказался "пустой": unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
implementation
end. Ни упоминания о курсоре. Естественно, при компиляции ехе-шник без курсора вышел. То ли ты мне pas-файл не тот выслал, то ли лыжи не едут )
-
Блин, точно пустой:(( Без понятия как оно получилось, чет с недосыпу начудил:( Вот модуль:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
procedure TForm1.FormCreate(Sender: TObject);
var
h: Cardinal;
begin
h:= LoadCursor(HInstance, PChar(200));
if 0 = h then RaiseLastOSError;
Screen.Cursors[1]:= h;
Screen.Cursor:= 1;
end;
end.
-
> Вот модуль:
Гы, действительно работает ) А теперь вот что я сделал: взял другой .ani-файл, назвал его "1.ani" и просто заменил твой. Скомпилировал ресурс. Перебилдил проект. Запускаю - выдаёт: "System Error. Code: 1814. Указанное имя ресурса не найдено в файле образа." Беру твой файл назад. Компилю ресурс. Билдю проект. Запускаю - работает.
Кто-нибудь может объяснить мне, что происходит?! З.Ы. Пробовал на 6 разных .ani-файлах с размерами от 6кБ до 80кБ - одинаково.
-
Всё, проблема решена. Достаточно было удалить строку {$R WindowsXP.res}
Большое спасибо за помощь )
-
> jetus (17.01.08 08:09) [37]
А я те говорил - давай твой курсор, попробую. Так нет, не послушал.
|