Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 4

Автор: ymg2000
Дата сообщения: 04.05.2008 18:13
mauar

Цитата:
ну да, правой кнопкой мыши по dll добавить файл

Никогда так не делал.
Т.е. задача сводится к извлечению ресурса из dll.
Попробуй при помощи утилиты для работы с ресурсами, напр. Ресторатором просмотреть, какой тип ресурса у тебя получился (думаю RCDATA) и его порядковый Id (ResId).

Схема примерно такая:
....
var
h : THandle;
ResStream: TResourceStream;
.......................................
h := LoadLibrary('MyRtfRes.dll');
........................................
ResStream := TResourceStream.CreateFromID(h, ResID, PChar(ResType));




Автор: mauar
Дата сообщения: 04.05.2008 19:57

Цитата:
Вы должны указать хэндл библиотеки, из которой вы будете грузить ресурс. Ну например:
ResLibHandle := LoadLibrary(PChar('Library.dll'));
LoadImage(ResLibHandle, MAKEINTRESOURCE(101), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);


А вместо LoadImage сделать LoadFile ?
Автор: scharhan
Дата сообщения: 04.05.2008 20:19
Всем привет! ...плиз помогите...!!! найдите ошибки(((
Задача такая..Нужно чтобы из главной программы вызывались модули которые решают
1. Метод Хорд
2. Умножение матрицы на матрицу
3. Метод Рунге - Кутта
Курсач нужно уже завтра распечатать ....
вот тексты программ...
........................................
ГЛАВНАЯ
[more]program glavn;
uses crt,Hord,Manama,Runge;
var e1:THord; m1:TManama; r1:TRunge;
buf:string;
begin
repeat
clrscr;
writeln(' ');
writeln(' MENU ');
writeln(' ');
writeln(' 1 - Метод хорд ');
writeln(' 2 - Умножение матрицы на матрицу ');
writeln(' 3- Метод Рунге-Кутта ');
writeln(' 4- Выход ');
writeln(' ');
case readkey of
'1':begin
clrscr;
e1.metodhord;
assign(e1.f,'d:\File.txt');
reset(e1.f);
while not eof (e1.f) do
readln(e1.f,buf);
writeln(buf);
close(e1.f);
readkey;
end;
'2':begin
clrscr;
m1.manama;
assign(m1.f,'d:\File.txt');
reset(m1.f);
while not eof (m1.f) do
begin
for m1.i:=1 to 200 do
begin
read(m1.f,buf);
write(buf);
end;
readln(m1.f,buf);
writeln;
end;
close(m1.f);
readkey;
end;
'3':begin
clrscr;
r1.rk;
assign(r1.f,'d:\File.txt');
reset(r1.f);
while not eof (r1.f) do
begin
for r1.i:=1 to 200 do
begin
read(r1.f,buf);
write(buf);
end;
readln(r1.f,buf);
writeln;
end;
close(r1.f);
readkey;
end;
'4':begin
close();
readkey;
end;
end;
writeln;
writeln('Повтор (y/n)');
until readkey='n';
end.[/more]
.............................................
Метод Хорд
[more]unit metodhord;
interface
uses crt;
type hord=object
a,b,c,cp,eps:real;
constructor init;
procedure shag;
function poisk:real;
end;
function funct(x:real):real;
implementation
begin
funct:=x*x*x*x*x+5*x+1;
end;
constructor hord.init;
begin
clrscr;
writeln(' Metod HORD');
write(' ВВЕДИТЕ ТОЧНОСТЬ: eps = ');
readln(eps);
write(' ВВЕДИТЕ ЛЕВУЮ ГРАНИЦУ ОТРЕЗКА: a = ');
readln(a);
write(' ПРАВУЮ ГРАНИЦУ ОТРЕЗКА: b = ');
readln(b);
cp:=a;
c:=a-(funct(a)*(b-a))/(funct(b)-funct(a));
end;
procedure hord.shag;
begin
if(funct(a)*funct(c)>0)
then a:=c
else b:=c;
cp:=c;
c:=a-(funct(a)*(b-a))/(funct(b)-funct(a));
end;
function hord.poisk:real;
begin
while (abs(c-cp)>eps) do
begin
if(funct(c)=0) then
begin
break;
end
else
begin
shag;
end;
end;
poisk:=c;
end;
var y:hord;
eps:real;
begin
y.init;
writeln(y.poisk);
readkey;
end.[/more]
..........................................
Умножение матрицы на матрицу
[more]
unit manama;
interface
uses crt;
type mptr = ^matrix;
matrix=object
a:array[1..3,1..3]of real;
constructor init;
procedure printf;
end;
implementation
constructor matrix.init;
var i,j:integer;
begin
clrscr;
writeln(' Matrica na matricu ');
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(' ВВЕДИТЕ a[',i,',',j,'] =');
readln(a[i,j]);
end;
end;
end;

procedure matrix.printf;
var i,j:integer;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(a[i,j]:3:3,' ');
end;
writeln;
end;
end;

procedure summ(e,f:matrix;t:mptr);
var i,j,k:integer;
s:real;
begin
For i:= 1 to 3 do
begin
For j:= 1 to 3 do
begin
s:=0;
for k:= 1 to 3 do
begin
s:=s+e.a[i,k]*f.a[k,j];
end;
t^.a[i,j]:=s;
end;
end;
end;

var a,b,c:matrix;
begin
a.init;
b.init;
summ(a,b,@c);
c.printf;
readkey;
end.
[/more]
..........................................................
Метод Рунге-Кутта
[more]
unit rk;
interface
uses crt;
type TEiler=object
x,y,h,b,dx1,dx2,dx3,dx4,ddx:real;
constructor init;
procedure shag;
procedure poisk;
end;
function proizv(f,g:real):real;
implementation
begin
proizv:=f*f+f*g+g*g;
end;
constructor TEiler.init;
begin
clrscr;
x:=0;
y:=0.5;
h:=0.1;
b:=1;
end;
procedure TEiler.shag;
begin
dx1:=proizv(x,y);
dx2:=proizv(x+h/2,y+h*dx1/2);
dx3:=proizv(x+h/2,y+h*dx2/2);
dx4:=proizv(x+h,y+h*dx3);
ddx:=(dx1+2*dx2+2*dx3+dx4)/6;
y:=y+ddx*h;
x:=x+h;
end;
procedure TEiler.poisk;
var f:text;
begin
assign(f,'1.txt');
rewrite(f);
while (x<=b) do
begin
writeln('x=',x:3:3,' ','y=',y:3:3);
writeln(f,x,' ',y);
shag;
end;
close(f);

end;
var q:TEiler;
eps:real;

begin
q.init;
q.poisk;
readkey;
end.
[/more]
....
Вот и сдать нам сказали 9 файлов
файлы pas и tpu и 1 файл exe. т.е. главная программа из которой все и работает(откомпилированная) и блоксхемы к ним.., но блок-схемы я уже сделал а проги не работают(((
ПЛИЗ ОТВЕТЬТЕ СЕГОДНЯ!!!
Заранее спасибо!!!!
Автор: RomanTim
Дата сообщения: 05.05.2008 07:00
scharhan
Во первых убери код в тег MORE, во вторых при чем тут твоя программа и Делфи?
Автор: scharhan
Дата сообщения: 05.05.2008 07:23
RomanTim
это паскаль, почти делфи))
я задавал тот же вопрос в теме "Задачи на Turbo Pascal 7.0 ", но там ни кто не отвечает!
Автор: fcdobpiy
Дата сообщения: 05.05.2008 07:28
а есть ли для делфи надстройка, которая делает, для выделенного в редакторе кода, отступ на один TAB ?
такая вещь есть в Visual studio, очень удобно
Автор: PowerChute
Дата сообщения: 05.05.2008 07:45
-
Автор: LordMAD
Дата сообщения: 05.05.2008 07:48
fcdobpiy
Ctrl+Shift+I & Ctrl+Shift+U
Автор: Maks150988
Дата сообщения: 05.05.2008 08:22
mauar

Цитата:
А вместо LoadImage сделать LoadFile ?


До без разницы. Хэндл модуля мы уже получили. Теперь можно хоть что грузить из него... Только потом FreeLibrary вызвать чтобы выгрузить...
Автор: fcdobpiy
Дата сообщения: 05.05.2008 08:36
LordMAD
да , оно. спасибо.
Автор: lerthe61
Дата сообщения: 05.05.2008 09:06
mauar
Умный совет:
Была сотворена какая-то непостижимая для меня и компилятора хрень. В собранной длл никакого файла RTF не будет.
Вот здесь можно увидеть как работать с ресурсами в Делфе:
http://articles.org.ru/docum/resurs.php
Автор: mauar
Дата сообщения: 05.05.2008 10:26

Цитата:
Умный совет:
Была сотворена какая-то непостижимая для меня и компилятора хрень. В собранной длл никакого файла RTF не будет.
Вот здесь можно увидеть как работать с ресурсами в Делфе:
http://articles.org.ru/docum/resurs.php

Ааа, даже так, хм, дружище а может ты тогда совет дашь или пример скинешь как в рессурсы этот RTF файл добавить?
Автор: MrZeRo
Дата сообщения: 05.05.2008 10:38
mauar
Так в этой же статье об этом и написано. В самом конце, про определенные пользователем ресурсы.
Автор: RomanTim
Дата сообщения: 05.05.2008 12:34
scharhan
В том то и дело что почти, как ты предлагаешь этот код проверять - в делфи он не соберется, а обычный паскаль вряд ли кто-то до сих пор использует.
И потом что конкретно не работает - не компилируется, падает с какими-то ошибками, все считает, но неправильно?
Автор: Maks150988
Дата сообщения: 05.05.2008 18:32
Короче у LENIN INC есть спертые исходники и переделанные под себя. Там есть пример реализации загрузки RTF файла из самого себя. Но при желании можно и из библиотеки загрузить, подправив код...))
Автор: delover
Дата сообщения: 06.05.2008 08:36
Короче вопрос всем. Я так думаю что это косьян может я и открываю не первым, но меня что то это жутко моск разбило. Ну может знакомо такое название как TDataSet который в модуле DB.PAS? Сколько ему годков интересно? В датасете есть FBOF: Boolean и FEOF: Boolean. У меня в таблице товаров "водка" один товар. Один!!! Количество FRecordCount = 1! Оно не меняется!.. FBOF = False. FEOF = False.
Файло которое читается DBF. Я вообще сначала думал косьян фибовский. А тут смотрю демки борлановские и понять не могу.

1.Запись одна.
2.Предыдущих записей тоже нет.
3.Следующих записей тоже нет. И редахтить нельзя (следующую вставлять).
4.Кнопки DBNafigator то разрешены то запрещены. Я по ним различно клацаю.

Вопрос в следующем. Запись одна. Так если запись одна у датасета то это разве курсор не в начале и не в конце? Что-то я тихо с мозгом прощаюсь. Куда он будет скакать если запись одна? В чём смысл, или прикол, мне не понятно. Приду домой посмотрю как себя MSSQL в управлении компьютером ведёт. Я подозреваю что несколько не так.
Автор: MrZeRo
Дата сообщения: 06.05.2008 08:43
delover
Все правильно.
Если запись одна, то флаг EOF будет выставлен только после вызова Next, BOF - после вызова Prior, в документации всё написано.
А то, что в таблице товаров "водка" остался только один товар, наводит на определенные размышления по поводу этого вопроса
Автор: delover
Дата сообщения: 06.05.2008 08:45
зы
Мне почему-то наш городок вспомнился. Там толстенький с натурально пропитой рожицей сидит за столом и на бутыльку вотки смотрит. Чёрненький просыпается и спрашиает: ты ещё не ушол? Тот ему типа - нет. -Так ты же за водкой обещал сбегать. Тот ему - так я и побегу за ней. Но вот я уже два часа сижу, смотрю на неё. А она не шелохнётся. Вот когда она побежит, тогда я её и догоню... *(

Добавлено:
До сих пор печальная история с моим мозгом. Я уже узнал что Eof так работает для резвых "прохрамеров" которые пишут while not Eof. Но почему DBActns тогда привязались к FEof? Почему то после следующего кода во всей программе стало адекватно.


Код: [no]procedure TBaseForm.actlBaseUpdate(Action: TBasicAction;
var Handled: Boolean);
var
I, RecCount, RecNo: Integer;
A: TDataSetAction;
begin
for I := 0 to actlBase.ActionCount - 1 do
if actlBase.Actions[I] is TDataSetAction then
begin
A := TDataSetAction(actlBase.Actions[I]);
if not Assigned(A.DataSource) then continue;
if not Assigned(A.DataSource.DataSet) then continue;
RecCount := A.DataSource.DataSet.RecordCount;
RecNo := A.DataSource.DataSet.RecNo;
if A is TDataSetFirst then
A.Enabled := (RecCount > 1) and (RecNo > 1)
else if A is TDataSetPrior then
A.Enabled := (RecCount > 1) and (RecNo > 1)
else if A is TDataSetNext then
A.Enabled := (RecCount > 1) and (RecNo < RecCount)
else if A is TDataSetLast then
A.Enabled := (RecCount > 1) and (RecNo < RecCount)
end;
end;[/no]
Автор: JbBaD
Дата сообщения: 06.05.2008 17:22
Подскажите пожалуйста.
Скачал пример бюрнера с dancemammal (Demos > Test Project)
http://www.dancemammal.com/downloads/file_info/download1.php?file=freeburner.rar

Зметил интересную "ошибку". При компиляции в Delphi 7, меню Options > View TOC работает.
Если тоже самое скомпилировать в Delphi 2007 TOC не работает.

Подскажите решение проблемы. Это баги 2007ой версии?
Автор: RomanTim
Дата сообщения: 07.05.2008 11:21
JbBaD
Скачал, скомпилил в 2007, все работает.
А отладчиком пройти, чтобы выяснить что именно не так, лень что-ли?
Автор: JbBaD
Дата сообщения: 07.05.2008 15:12
RomanTim
Отладчиком проходил в том то и дело...
Удивило что работает абсолютно все, кроме вот этого пресловутого TOC'а
Create a CUE file работает? У меня после компиляции в 2007 вылетает с "access violation", с D7 все норм.
Автор: RomanTim
Дата сообщения: 08.05.2008 06:40
JbBaD
И это работает... ты отладчиком определи в каком месте исходников компонента ошибки происходят (модуль, строка), тогда можно будет хоть что-то более-менее конкретное смотреть
Автор: JbBaD
Дата сообщения: 08.05.2008 08:21
Люди, ну правда, это уже не весело даже...
Проверьте еще кто-нить...

Только что поставил на свежеустановленную висту D2007 Lite, скомпилил проект TOC невидит. Снес D2007, поставил D7 скомпилил и TOC показывает.

До этого пробовал на D2007 полной, тотже результат.
Автор: RedPromo
Дата сообщения: 08.05.2008 09:23
JbBaD
Скомпилил в 2007 полной, все работает без проблем.
Автор: laybot
Дата сообщения: 08.05.2008 11:44
Доброго времени суток!
Нужна помощь по компиляции. Eсть файл: http://stashbox.org/113650/CceSamples.rar
(100кВ) в котором (как я понял) заготовки для компиляции:
AviImporter.dll
SimplesExporter.dll
CceWin.exe
CceCon....(?)
Посмотрите пожалуйста, язык вроде С+
Сорри, если ошибаюсь с языком и не туда запостил...
Автор: RedPromo
Дата сообщения: 08.05.2008 13:06
laybot
Для того чтобы скомпилировать данные проекты необходимо еще SDK если я правильно понял это на Cisco оборудование.
Кстати проекты для VS2008.
Автор: laybot
Дата сообщения: 08.05.2008 17:25
RedPromo
Благодарю Вас за ответ

Цитата:
если я правильно понял это на Cisco оборудование

Эта "беда" из Мпег-2 энкодера "Cinema Craft Encoder SP2" (Price=2000$ :0 )
Домашняя: _http://www.cinemacraft.com/eng/download.html#sp
Загрузка: _http://www.cinemacraft.com/files/cce/s21000101t/ccesp2_100_trial.zip
В Варезнике тема развита...
На оффсайте инфы нет...
Думаю речь идёт о скрытых настройках кодека

Автор: RedPromo
Дата сообщения: 08.05.2008 17:56
Lihonosov
У меня ругается на эти строчки

#import "progid:CceServer.CceServ2.1" embedded_idl, no_namespace
#import "progid:CceExporter.CceExp.1" embedded_idl, no_namespace, exclude("ICceTrace", "ICceExp")
Как я понимаю он хочет импортировать из type library COM.
Если закоментить как и подозревалось сразу не хватает куча бъектов.
Поэтому я и говорю чего здесь не хватает, нужно по сайту посмотреть.
Автор: mauar
Дата сообщения: 09.05.2008 01:51
Как копировать данные из одного ADOTable в другой ADOTable, с помощью SQL запроса?
Автор: JbBaD
Дата сообщения: 09.05.2008 06:51
RomanTim
RedPromo
Ребят а не знаете в чем может быть проблема?

Добавлено:
SCSIUnit строка 1000:

Result := SCSIreadTocPmaAtipEx(DeviceID, False, 0, 0, @Buf, SizeOf(Buf), Sdf);
TOC.FirstTrack := Buf.FirstTrack;
TOC.LastTrack := Buf.LastTrack;
TOC.TrackCount := (BigEndianW(Buf.Length) div
SizeOf(TScsiTrackDescriptorTemplate));

Здесь всегда (D2007) Buf возращает 0

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.