Вниз
Скачать: CL | DM;

Вопрос по сохранению иконки   Найти похожие ветки 

← →
msoftware ©   (2003-02-04 14:07) [0]

Здравствуйте мастера! Вопрос есть один:
Ниже представлен один код, но там какая-то ошибка, непойму:
type FSM = record
...
FrmMain_Width: integer;
...
FrmMain_Height: integer;
...
VertMenu_BtnImages: array[0..10] of array [0..55] of TIcon; //Трехмерный массив
...
end;

...

procedure TfrmMain.FormCreate(Sender: TObject);
var f: File of FSM;
GSet: FSM;
Icon: TIcon;
begin
Icon:=TIcon.Create;
ImageList2.AddIcon(GSet.VertMenu_BtnImages[0][0]);
END;

МОЖЕТ КТО ЗНАЕТ В ЧЕМ ЗДЕСЬ ДЕЛО???


← →
han_malign ©   (2003-02-04 14:16) [1]

Создаешь какую-то пустую пиктограмму(Icon), ссылку на которую(а значит и память) тут-же теряешь, а потом пытаешся вставить в лист левый, и вероятно несуществующий объект (типа TIcon) из массива который забит стековым мусором (локальная запись GSet - нигде не инициализируется)
- и что по твоему должно получиться


← →
msoftware ©   (2003-02-04 14:20) [2]

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ОЙ-Ой извиняюсь недописал, торопился вот он:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


----------
СЧИТЫВАНИЕ ИЗ ФАЙЛА
----------

type FSM = record
...
FrmMain_Width: integer;
...
FrmMain_Height: integer;
...
VertMenu_BtnImages: array[0..10] of array [0..55] of TIcon; //Трехмерный массив
...
end;

...

procedure TfrmMain.FormCreate(Sender: TObject);
var f: File of FSM;
GSet: FSM;
Icon: TIcon;
begin
Icon:=TIcon.Create;
AssignFile(f,"MailSettings.fsm");
Reset(f);
Read(f,GSet);
ImageList2.AddIcon(GSet.VertMenu_BtnImages[0][0]);
END;
---------
ЗАПИСЬ В ФАЙЛ
----------


procedure TfrmMain.FormDestroy(Sender: TObject);
var f: File of FSM;
Save: FSM;
Icon: TIcon;
begin
Icon:=TIcon.Create;
assignFile(f,"MailSettings.fsm");
reset(f);
ImgIndex:=VertMenu.GetHeaderByIndex(H).GEtButtonByIndex(B).ImageIndex;
ImageList2.GetIcon(0,Save.VertMenu_BtnImages[0][0]);
write(f,Save);
closeFile(f);



← →
msoftware ©   (2003-02-04 14:39) [3]

Ну че никто ни знает шоли???


← →
han_malign ©   (2003-02-04 14:45) [4]

Ну-ну:
1. Зачем вообще - Icon:=TIcon.Create; - абсолютно ничего, кроме утечек памяти, не делающий код (то есть зачем он был изначально, до твоих переделок, понятно - для создания буфферного экземпляра межде файлом и TImageList-ом)
2. Если записал в файл указатель на экземпляр класса, а потом считал в другом сеансе, то это будет просто указатель на произвольный блок памяти.
3. LoadFromStream и SaveToStream не просто так к TIcon прицеплен, никто за тебя содержимое экземпляра по указателю на него(элементу массива) сохранять и восстанавливать не будет.

Короче сохранять и восстанавливать массив икон надо поэлементно, через LoadFromStream и SaveToStream, причем должен понимать что TIcon(nil).LoadFromStream/SaveToStream - Access Violation.


← →
msoftware ©   (2003-02-05 09:29) [5]

> han_malign ©
Самый простой исходничок не подкинешь?


← →
Anatoly Podgoretsky ©   (2003-02-05 09:49) [6]

Тут обсуждать абсолютно нечего, это просто надо все удалить.
Взяться за учебники по Дельфи.


← →
msoftware ©   (2003-02-05 11:00) [7]

УУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУРРРРРРРРРРРРРРРРРРРРРРРРРРРАААААААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
У МЕНЯ ПОЛУЧИИИИИИИИИИИЛЛЛЛЛЛЛОООООООООООООООООООООССССССССЬЬЬЬЬЬЬЬ!!!!!!!!!!!!!!!!!!!!!
ТОЛЬКО СОХРАНЯЕТ В 16 ЦВЕТОВ, никто незнает как сохранять в hicolor"e



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
3-38113
Behemoth
2003-01-28 11:45
2003.02.13
Как получить список всех псевдонимов (Aliase) на моей машине?


14-38462
КАСТРУЛЯ
2003-01-30 16:24
2003.02.13
Прокрутка колёсика мыши (Я КАСТРЮЛЯ)


3-38088
Relict
2003-01-27 15:25
2003.02.13
Опять запись картинок на сервер


7-38603
FOX(c)
2002-12-11 23:46
2003.02.13
ПРОГРАМНО ОТКЛЮЧИТЬ ФЛОП-ДИСКОВОД


7-38574
alex_bf
2002-12-07 12:54
2003.02.13
Как запрятать файл?




   Наверх