Вопрос № 66341: Помогите с запуском программы. Код в приложении. При вызове процедуры возникает ошибка: project1.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства и тд. Далее ещё ошибка:"Exception EMCIdeviceError in module proj...Вопрос № 66345: Возник такой вопрос. Можно ли к одному модулю подключить два файла с одинаковыми ресурсами (оба, скажем, с битмапами)? Как в таком случае узнать, откуда нужно
загрузить нужный рисунок?...Вопрос № 66350: Здравствуйте Эксперты.
Дана строка (перевод в Integer не вызывает проблем). Строка находится в Edit.text
Она представляет собой число в двоичной СС. Нужно перевести число в ВОСЬМЕРИЧНУЮ (8) СС, при этом нельзя использовать промежуточный перев...Вопрос № 66363: Уважаемые эксперты, помогите пожалуйста разобраться с двумя вопросами:
1)Есть у меня массив A[1..n] (конец массива n - переменная), но Делфи так компилировать не хотит, выдает - constant expression expected. Как мне сделать так чтобы в программе ...
Вопрос № 66.341
Помогите с запуском программы. Код в приложении. При вызове процедуры возникает ошибка: project1.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства и тд. Далее ещё ошибка:"Exception EMCIdeviceError in module project1.exe at 00077EA0. Данный файл не найден. Проверьте что путь и имя файла указаны верно." Путь точно правильный.
Если перед запуском процедуры выполнить opendialog1.execute и в нём открыть файл project1.exe и после этого выполнить процедуру из приложения то всё работает. project1.exe изменять нельзя, писал его не я.
Приложение:
Отправлен: 10.12.2006, 13:03
Вопрос задал: Kolyan (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Gladiator
Здравствуйте, Kolyan!
Перед тем, как запускать программу, нужно проверить её существование. С учётом этого в Ваш код нужно добавить:
if FileExists(tr1) then ShellExecute(0,'open',pchar(tr1),nil,nil,sw_show) else
ShowMessage('Файла "'+tr1+'" не существует.')
Ответ отправил: Gladiator (статус: 6-ой класс)
Ответ отправлен: 11.12.2006, 08:21
Вопрос № 66.345
Возник такой вопрос. Можно ли к одному модулю подключить два файла с одинаковыми ресурсами (оба, скажем, с битмапами)? Как в таком случае узнать, откуда нужно загрузить нужный рисунок?
Отправлен: 10.12.2006, 13:42
Вопрос задал: Fynjy_8 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Gladiator
Здравствуйте, Fynjy_8!
Не совсем понятно, что вы имеете в виду - dll с ресурсами или файлы *.res?
Но вы же сами программируете и должны знать, где у вас что лежит. У каждого ресурса имеется свой идентификатор, по которому можно его загрузить.
Ответ отправил: Gladiator (статус: 6-ой класс)
Ответ отправлен: 11.12.2006, 08:15
Отвечает: Gh0stik
Здравствуйте, Fynjy_8!
Конечно можно, ведь ресурсы различаются именами, которые Вы задаете самостоятельно.
Приведу пример использования.
Создаете файл img.rc - по своей сути он текстовый, в нем например Вы хотите описать два графических файла.
Это будет выглядеть так:
IMG RCDATA 1.jpg
IMG2 RCDATA 2.jpg
Далее создаем файл ресурсов, используя такую команду: brcc32.exe img.rc.
Файл brcc32.exe - Вы сможете найти в директории с установленным Delphi.
И наконец, применение файла ресурсов в программе:
uses jpeg;// это для работы с JPEG-форматом
........
implementation
{$R *.dfm}
{$R img.RES}
//процедура ДОБЫТИЯ ресурса...
procedure LoadJPEGFromRes(NameJpg:string; ThePicture : TPicture);
var rs:TResourceStream;
JpegImg:TJPEGImage;{uses jpeg}
begin
rs:=TResourceStream.Create(HInstance, NameJpg, RT_RCDATA);
JpegImg:=TJPEGImage.Create;
JpegImg.LoadFromStream(rs);
ThePicture.Assign(JpegImg);
JpegImg.Free;
rs.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
LoadJPEGFromRes('IMG', Image1.Picture);//загружаем картинку из ресурса - обращаемся по имени...
// либо LoadJPEGFromRes('IMG2', Image1.Picture);
end;
Если Вам необходимо загрузить ресурсы из двуж файлов, то просто добавляете их ...
...........
implementation
{$R *.dfm}
{$R imgres1.RES}
{$R imgres2.RES}
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Практикант)
Ответ отправлен: 11.12.2006, 12:18
Вопрос № 66.350
Здравствуйте Эксперты.
Дана строка (перевод в Integer не вызывает проблем). Строка находится в Edit.text
Она представляет собой число в двоичной СС. Нужно перевести число в ВОСЬМЕРИЧНУЮ (8) СС, при этом нельзя использовать промежуточный перевод в десятичную(10) СС.
помогите плиз.
Отправлен: 10.12.2006, 14:34
Вопрос задал: Sarymian (статус: 4-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: sir henry
Здравствуйте, Sarymian!
Перевод в десятичную систему только усложнит задачу. :)
1. Разбиваете строку на триады, причем начинаете разбивку с конца.
2. Если в последней разбивке до триады не хватает одной или двух позиций, то дополняете нулями до триады.
3. Можно составить массив соответствия двоичного числа восьмеричному:
ar: array[0..7];
ar[1]:='000';
ar[1]:='001';
ar[2]:='010';
ar[3]:='011';
ar[4]:='100';
ar[5]:='101';
ar[6]:='110';
ar[7]:='111';
4. Посылаете каждую триаду в функцию, в которой в цикле проходит поиск в массиве:
Function BinToOct(s: string): string;
Var
i: integer;
Begin
For i:=0 To 7 do
If s=ar[i] Then
Begin
Result:=IntToStr(i);
Break;
End;
End;
5. В главной процедуре теперь только остается конкатенировать возвращаемое из функции и, если нужно, перевести в числовой формат.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 10.12.2006, 17:58 Оценка за ответ: 5 Комментарий оценки: Отлично. Спс.
Вопрос № 66.363
Уважаемые эксперты, помогите пожалуйста разобраться с двумя вопросами:
1)Есть у меня массив A[1..n] (конец массива n - переменная), но Делфи так компилировать не хотит, выдает - constant expression expected. Как мне сделать так чтобы в программе можно было вводить размерность массива?
2)У какого компонента типа memo или listbox'a можно таким кодом как в приложении выводить строки разных цветов, а то в вышеуказаных компонентах от таких инструкций изменяется цвет всего текста. Или можно ли как-нибудь в эти компоненты выводить разноцветный текст?
Приложение:
Отправлен: 10.12.2006, 16:51
Вопрос задал: Lexx_2k6 (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Писарев, Павел, Юрьевич
Здравствуйте, Lexx_2k6!
Отвечаю на первый вопрос. Чтобы создать массив переменной длины надо использовать динамический массив, а потом уже в программе указывать его длину с помощью процедуры SetLength. Пример описания динамического массива и процедуры SetLength приведён в приложении.
Приложение:
Ответ отправил: Писарев, Павел, Юрьевич (статус: 2-ой класс)
Ответ отправлен: 10.12.2006, 22:17 Оценка за ответ: 5
Отвечает: Gladiator
Здравствуйте, Lexx_2k6!
На второй вопрос отвечаю:
TStringGrid и его событие OnDrawCell, где можно раскрашивать каждую строку любым цветом, в зависимости от содержимого, номера строки и т.д.
Ответ отправил: Gladiator (статус: 6-ой класс)
Ответ отправлен: 11.12.2006, 08:09 Оценка за ответ: 4
Отвечает: KiberZero
Здравствуйте, Lexx_2k6!
Вот пример объявления массива,надеюсь,понятно.
Type
mas=array [1..n] of Integer; //Объявляем массив
var
Form1: TForm1;
a:mas; //Определяем переменную для данных массива
n:Integer; //Вводим переменную для количества строк
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var i:Integer; //Индекс элемента
begin
Memo2.Clear; //Очищаем окно
n:=Memo1.Lines.Count; //Определяем количество заполненных //строк
for i:=1 to n do
begin
a[i]:=StrToInt(Memo1.Lines[i-1]); //Заполняем массив
end;
end;
Массив заполнен,а дальше делайте с ним,что надо.
Что касается цвета,воспользуйтесь тем же массивом,присваивая каждой строке свой цвет.
Удачи!
Ответ отправил: KiberZero (статус: 4-ый класс)
Ответ отправлен: 11.12.2006, 21:52
Отвечает: Coupler
Здравствуйте, Lexx_2k6!
Посмотрите вот этот компонент:
http://decoding.narod.ru/download/component/memo/fatpak.zip
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 12.12.2006, 12:23