Страница 7 из 9

Re: Помощь начинающему

СообщениеДобавлено: 31.12.2012 01:18:11
Leon
Ребята.кто знает.Я уже замаялся.Требуется сменить иконку в программе Лазаруса.Ну чтоб моя программа в папке была не с синим кошачьим ногтем,а с каким-нить цветком или еще чего там.Захожу в свойства проекта там где меняются иконки.Удаляю их коготь и даю ссылку на свою картинку.Вроде принимает.Проблемы начинаются при компиляции.Пишет "не могу скомпилировать ресурс".Выбрасываешь иконку вообще - дело идет.Пробовал уже разные форматы и размеры,разные папки с картинками.Все то же.Что за х..нь? Глюки Лазаруса или я что-то не так делаю? Спасибо.

Re: Помощь начинающему

СообщениеДобавлено: 31.12.2012 03:06:48
Little_Roo
Размер выдерживаем 32х32 ??? Или формат графики левый...или битый... :(

Re: Помощь начинающему

СообщениеДобавлено: 31.12.2012 12:27:35
Leon
Размер дал уже 30х30.Пробовал форматы JPG,BMP,ICO,PNG.Кстати,загрузчик в строке перечисления допустимых форматов именно их и перечисляет.А под родным лазаровским лаптем в квадратике есть шкала с ползунком,которая позволяет растягивать эту иконку аж на 256х256.Кому нужны такие большие иконки? Кстати посмотрел файл ICO этого самого лазаровского лаптя программой MediaInfo. Так там оказался целый пакет иконок разных размеров.
А в моем случае я все вроде сделал правильно.И графика вроде не битая,вьюверы видят ее без вопросов.И не могут же все форматы быть битыми! Это нонсенс. Отладчик английским пишет,что проблема компиляции файла ресурсов.Для более полной информации воспользуйтесь -vt. Куда ее эту -vt сунуть? Еще напишу че-нибудь,что слетит даже то,что есть.Вобщем такая вот морока.

Re: Помощь начинающему

СообщениеДобавлено: 31.12.2012 14:27:33
iskander
Leon, можете показать текст файла проекта (*.lpr)?

Re: Помощь начинающему

СообщениеДобавлено: 01.01.2013 01:12:10
Leon
Пожалуйста.

program project1;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
{Interfaces,} // this includes the LCL widgetset
Forms, Unit1, unit2, Interfaces;

{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}

{$R *.res}

begin
Application.Title:='myprog';
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

На все это добро компилятор выдает вот что:

Compiling resource project1.or
project1.lpr(22,1) Error: Error while compiling resources. Compile with -vd for more details. Check for duplicates.
project1.lpr(22,1) Fatal: There were 1 errors compiling module, stopping

Поди-ка разберись чего он хочет.22-я строка как раз и есть end.

Re: Помощь начинающему

СообщениеДобавлено: 01.01.2013 07:37:36
Ask
Это какая-то старая версия Лазаруса, новые не пишут {$R project1.rc}

Re: Помощь начинающему

СообщениеДобавлено: 01.01.2013 09:37:59
iskander
Leon, попробуйте закомментировать строку
Код: Выделить всё
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}

Re: Помощь начинающему

СообщениеДобавлено: 02.01.2013 13:36:17
fpbt
Здравствуйте.

Подскажите, модуль "TlHelp32" можно заменить на "JwaTlHelp32" или может чем-то другим? (сам TlHelp32 не нашел)

Re: Помощь начинающему

СообщениеДобавлено: 02.01.2013 19:37:21
Leon
Да,действительно.Программу писал еще на старых Лазарусах.Поэтому код еще их.Теперь стоит 1.0.4 Вот он и выдает эти фокусы.Самое интересное,что буквально сегодня завел новый проект,сунул туда картинку 80х120 и все прошло как по-салу.Никто даже и не возмутился о каких-либо размерах.Программа сама переработала иконку под приемлемые размеры.А вот старая программа почему-то неспособна к сим трюкам.Ругается компилятор и все... :roll:

Re: Помощь начинающему

СообщениеДобавлено: 05.01.2013 01:58:15
Leon
Здравствуйте.Такая вот задачка.Накатал я праздниками программку,которая обслуживает АЦП.Это определенная аппаратная заморочка: инициализация интерфейсов,портов и проч.Вобщем все работает,если ... Если вдругна пару секунд пропадет свет или даже пройдет сетевая помеха,аппарат зависает.Требуется заново перезапускать программу,чтобы все восстановить.
ВОПРОС: Нельзя ли как-то изнутри программы избежать этой напасти,т.е. делать рестарт этой же программы изнутри самой программы? Похоже на "масло масляное",ну а вдруг есть такой программный фокус... Подскажите,уважаемые эксперты.

Re: Помощь начинающему

СообщениеДобавлено: 05.01.2013 06:44:01
Vadim
Этот "программный фокус" делается очень просто - Источник Бесперебойного Питания. Программирование в Вашем случае даже рядом не валялось. ;)

Re: Помощь начинающему

СообщениеДобавлено: 05.01.2013 13:16:01
Leon
Увы я тоже ни к чему лучшему не догадался.Пришлось приобрести ИБП...

Теперь следующая задачка.Есть некоторые стандартные цвета С1 и С2.И есть цвет опытного образца ExColor.Все естественно TColor.Требуется программно определить (ну,скажем в %) к какому цвету из двух стандартных ближе опытный образец.Мои мысли:
1.Сравнивать десятичные числа цветов ExColor с С1 и С2.
2.Сравнивать по компонентам R c R,G c G,B c B. Но тогда как все свести воедино? Пропорции ведь окажутся разными,а как сделать вывод о схожести в цифровом виде?

Re: Помощь начинающему

СообщениеДобавлено: 05.01.2013 15:11:03
Vadim
Надо вычислить среднеарифмитическое у цветов С1 и С2, и сравнивать с ним ExColor. По любому кто-то, С1 или С2 больше другдруга. Вот и смотрите, если ExColor меньше среднеарифметического, значит этот цвет ближе к меньшему цвету, если больше, то ближе к большему. ;)

Re: Помощь начинающему

СообщениеДобавлено: 06.01.2013 01:49:35
Vapaamies
Почитать в Википедии, как делается квантование в GIF. Мне его как-то даже на SQL пришлось реализовывать.

Re: Помощь начинающему

СообщениеДобавлено: 07.01.2013 00:04:51
nikolay61
Где ошибка?
program pomylka;

uses crt;
var i,a:real;
BEGIN
clrscr;
for i:=8 to 10 do
a:=sin(i);
reADLN;
END.

Добавлено спустя 3 минуты 2 секунды:
Что то не так работает. Слово не выдает.
program for26;
{ Заданы 2 слова a и b. Можно ли получить из слова a,
вычеркивание некоторого кол-ва букв, слово b. }

uses crt;
var i,j,m,n : integer;
a,b,d,e : string;
begin
clrscr;
write('введите текст a=');readln(a);
write('введите текст b=');readln(b);
n:=length(a);m:=length(b);e:=b;
if n<m then halt;
for i:=1 to n do
for j:=1 to m do
if a[i]=b[j] then begin
d:=d+a[i];
delete(b,j,1);
end;
if d=e then write('Да')
else write('Нет');

readln;
end.