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

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

Автор: RomanTim
Дата сообщения: 30.10.2007 14:10
informesrab
Возникающее исключение ловит отладчик и показывает тебе его. Если нажать F9 (Run), то программа начнет работать дальше и try except отработает. Включить/выключить такое поведение отладчика можно здесь Tools - Options - Debuger Options...Language exceptions галочкой Notify on Delphi exceptions
Автор: ymg2000
Дата сообщения: 30.10.2007 14:12
informesrab
Привожу подобный фрагмент:
[more]
function TCredo.ReadTxtFile: boolean;
{ Считывает текстовой файл в список FStrList }
var
Fl: TextFile;
S: string;
begin
Result := True;
AssignFile(Fl, FFileName);
FStrList.Clear;
try
Reset(Fl);
While Not EOF(Fl) do
try
System.Readln(Fl, S);
FStrList.Add(S);
except
Result := False;
MessageDlg(Format(SReadFileError, [FFileName]), mtError, [mbOK], 0);
Break;
end;
finally
CloseFile(Fl);
end;
end;[/more]
CloseFile размещай так, чтобы он у тебя закрывался всегда - с ошибкой и без ошибки.

Автор: vserd
Дата сообщения: 30.10.2007 14:18
informesrab
посмотри примеры к Assign/reset в паскале там нужно обрабатывать коды ошибок. Исключения там не генерируются или генерируются по директиве компилятора.
Автор: Unicorn31
Дата сообщения: 30.10.2007 16:43
Ребят, не дадите ссылочку на ресурс, где можно было бы достать наипростейший пример реализации принципа полиморфизма в Delphi? Или может у кого такй пример завалялся случаем ?
Автор: RomanTim
Дата сообщения: 30.10.2007 19:31
Unicorn31
[more=Проще некуда]
program Project1;

{$APPTYPE CONSOLE}

type
TParentClass = class
procedure Run; virtual;
end;

TChildClass = class(TParentClass)
procedure Run; override;
end;

procedure TParentClass.Run;
begin
Writeln('Parent');
end;

procedure TChildClass.Run;
begin
Writeln('Child');
end;

var
x: TParentClass;

begin
x := TParentClass.Create;
x.Run;
x.Free;

x := TChildClass.Create;
x.Run;
x.Free;

Readln;
end.
[/more]
Автор: Unicorn31
Дата сообщения: 31.10.2007 10:50
RomanTim
спасибо за помощь...
Автор: MDMDVD
Дата сообщения: 31.10.2007 13:43
Товарищи разыскивается Direct1c компонента для
поделитесьу кого есть
Автор: DroN_S
Дата сообщения: 31.10.2007 14:00

Цитата:
Товарищи разыскивается Direct1c компонента для

тебе не в этот раздел....
смотри раздел про компоненты
Автор: Rudia
Дата сообщения: 01.11.2007 18:19
Можно ли изменить системные модули, конкретно Variants и заставить делфи использовать измененный и как это грамотнее всего сделать?
Автор: TankMan
Дата сообщения: 01.11.2007 23:59
Может кто знает, ищу компонент, для отображения определенного списка картинок, т.е. хочу при указании папки получить на форме миниатюрные изображения графических файлов. В общем что-то типа динамического набора TImage, но вот проблема в Д7 - TImage не работает с png, gif и тиф кажется тоже не понимает может кто помочь?
Автор: OdesitVadim
Дата сообщения: 02.11.2007 01:17
Rudia
Если аккуратно, то можно. Наиболее корректный способ - скопировать нужный pas файл в папку с проектом. Теперь при компиляции будет он браться. Можете изменять его в разумных пределах.
Автор: relictus
Дата сообщения: 02.11.2007 08:26
TankMan
Смотри, к примеру, ImageEn, в нем есть:
TImageEnMView component is the same as TImageEnView, but it can handle multiple images.
TImageEnMView can display images in rows, in columns, in a grid or in a single frame. The images can be animated: if you choose to show a single frame, you can view an animated sequence (as a Gif or an AVI). Each image has assigned a delay time.

The images can be stored fully, as thumbnails (a sub-resampled image of the original), or loaded when displayed (you have to specify only the file name), or upon request (whenever an image is to be shown, an event is generated).

If you choose, the user can select an image: selected images will have a bordered frame.
You can also specify a custom function whenever an image is shown (i.e., to paint the image index near the image).

Автор: Rudia
Дата сообщения: 02.11.2007 09:23
OdesitVadim
Check your project's search path. Remove (BDS)\source\Win32\rtl\sys from it, so that the Variants unit isn't recompiled with your app (which is no longer allowed).
Нельзя так с 2005 делфи
Автор: reflexfx
Дата сообщения: 02.11.2007 10:44
TankMan PNGLib
Автор: TankMan
Дата сообщения: 02.11.2007 11:37
reflexfx
relictus
А ссылочками не поделитесь? А то я только разговоры о них нашел
Автор: SergeBS
Дата сообщения: 02.11.2007 11:46
TankMan
За компоненты разговор в другом топике!
Автор: b1t
Дата сообщения: 02.11.2007 12:46
Мужики, помогите решить проблему по поводу курсавую работу !

Ситуация такая:
задали самостоятельную работу, чтоб выбрали какую-ту тему, и сделать по этой теме ПРОГРАММУ с ОПИСАНИЕМ ! (кстати описание очень нажно), т.е. сделать HELP к программе.
------
Предмет: ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ (3 крус)
Язык програм. DELPHI
Мой уровень знания прогаммирование - низкий
------
Я бы хотел какой-то проект (готовый, с интерфейсом), чтоб под него сделать HELP, подцепил туда и все.
Просто дела в том, что надо там все так делать и написать, чтоб типо я сделал...

P.S. Программа должен быть таким, чтоб годен был для института !
P.S.S. или хотяб сайт, где можно скачать готовые проекты, что можно было редактировать.
Автор: b1t
Дата сообщения: 02.11.2007 19:19
вот нашол например:
http://www.delphisources.ru/pages/faq/base/comps_list.html
хотел эта программа, чтоб разработывать "под себя", типа я делал !
Просто там только исходник, а интерфейс (обший проект) незнаю откуда взять !

помогите пожалуйста !
Автор: Maks150988
Дата сообщения: 02.11.2007 20:41
b1t
Скачай лучше LENIN INC WIN32API Library. Там типовых примерчиков множетство. Подсроишь что-нибудь под себя.
Автор: b1t
Дата сообщения: 03.11.2007 15:14
Maks150988

Это что вообше? я очень плохо знаю программировани... (
и такой должен быть, что препод не понял, что это с инета скачан (т.е. НЕ шаблон)
Автор: Maks150988
Дата сообщения: 03.11.2007 20:49
b1t
А это просто один человек решил помочь начинающим программистам в использовании WinApi. Это построение и интерфейса и плюс некоторые другие возможности. Все легко. Тем более он комментирует в исходнике что куда и зачем. Берете Делфи и на радостях компилируйте.
Автор: kalkin
Дата сообщения: 03.11.2007 22:40
Подскажите как отобразить картинку с http на форме, загрузив в TImage,
не создавая временный файл на винчестере
Автор: nuker2015
Дата сообщения: 04.11.2007 01:42

Цитата:
Подскажите как отобразить картинку с http на форме, загрузив в TImage,
не создавая временный файл на винчестере
ну нечто подобное(сейчас дельфи нет под рукой, опишу общий смысл):
var
imgListPaths пусть будет Tstringlist - заполни его предварительно путями картинок.
imgList пусть будет TList чтоли, там вроде можно ссылки хранить.
tm pImg: TImage;

for i=0 to imgList.count-1 do begin
tmpImg:=TImage.Create(nil);
tmpImg.LoadFromFile(imgList.WStrings[i]);
imgListPtrs.addObject(tmpImg);
tmpImg.free;
end;

Кидаешь на форму TDrawGrid и гдето в onCellPaint(вроде так называлось)
рисуешь вроде этого:
(imgListPtrs.items[i] as TImage).draw(cellRect.left,cellRect.top);
--- я только наводку дал, на дельфи не писал давно, надеюсь смысл понятен.

Добавлено:
b1t
Цитата:
вот нашол например:
http://www.delphisources.ru/pages/faq/base/comps_list.html
хотел эта программа, чтоб разработывать "под себя", типа я делал !
Просто там только исходник, а интерфейс (обший проект) незнаю откуда взять !

Что-то смотрю обленились совсем... как нестыдно.
Вверху какие объекты присутствуют?
Код: TNetForm = class(TForm)
ListView1: TListView;
ImageList1: TImageList;
Button1: TButton;
Edit1: TEdit;
Timer: TTimer;
Label1: TLabel;
Button2: TButton;
Автор: b1t
Дата сообщения: 04.11.2007 09:17
Maks150988

Уменя есть на диске все версии ! в каком есть встроенный этот библиатека?

Добавлено:
nuker2015

Если я все это знал, я вообше не просил помощь по делфи !
вот что надо иметь ввиду до того, чтоб писать какую-ту очередную "умные мысли" !
Автор: RomanTim
Дата сообщения: 04.11.2007 09:30
kalkin
Используй TMemoryStream, причем это применимо в большинстве случаев когда требуется передать какие-то данные от одного компонента другому.
Если заранее известен формат картинки можно сделать так:

Код: var
ms: TMemoryStream;
gif: TGIFImage;
begin
ms := TMemoryStream.Create;
IdHTTP1.Get('http://i.ru-board.com/avatars/pikachu.gif', ms);
ms.Position := 0;

gif := TGIFImage.Create;
gif.LoadFromStream(ms);
Image1.Picture.Assign(gif);
gif.Free;

ms.Free;
Автор: kalkin
Дата сообщения: 04.11.2007 21:13
Спасибо большое всем за ответ особено RomanTim !
Автор: Maks150988
Дата сообщения: 04.11.2007 21:14
b1t
Что именно у вас есть? Версии LENIN INC WIN32API Library или Delphi разных версий?

Народ, требуется ваша помощь. Захотелось приукрасить программу. Вот ссылка на оригинальный код http://rapidshare.com/files/67441774/snow.zip.html
Решил я это дело через WinApi пустить, но заморочка у меня с таймером, потому как в оригинале идет работа с формой и там есть компонент Timer. А тут нельзя использовать компонент.
Вот что я сделал.

[more=Читать дальше..]

Создал inc файл и поместил следующее:


Код: type
MyPoint = record
X : integer;
Y : integer;
lastColor : COLORREF;
speed : byte;
crazy : integer;
end;

var
screenW,screenH:integer;
points : array of MyPoint;
desktop:hDC;
wind:integer;
show_color:COLORREF;

procedure ShowGradient2(prmDC:hDC;prmRed,prmGreen,prmBlue:byte;ClientWidth,ClientHeight:integer);
var
Row:Word ;
wrkPenNew:hPen;
wrkDelta:integer;
begin
wrkDelta:=100 div (1+ClientHeight);
if wrkDelta=0 then wrkDelta:=1;
for Row := 0 to 1+(ClientHeight) do begin
wrkPenNew:=CreatePen(PS_SOLID,1,RGB(prmRed, prmGreen, prmBlue));
SelectObject(prmDC,wrkPenNew);
MoveToEx(prmDC,0,Row,nil);
LineTo(prmDC,ClientWidth,Row);
DeleteObject(wrkPenNew);
if prmRed > wrkDelta then Dec(prmRed,wrkDelta);
if prmGreen > wrkDelta then Dec(prmGreen,wrkDelta);
if prmBlue > wrkDelta then Dec(prmBlue,wrkDelta);
end;
end;

function IsContrast(Color1,Color2:COLORREF):boolean;
var
r1,g1,b1:byte;
r2,g2,b2:byte;
begin
result:=false;
r1:=GetRValue(Color1);
g1:=GetGValue(Color1);
b1:=GetBValue(Color1);
r2:=GetRValue(Color2);
g2:=GetGValue(Color2);
b2:=GetBValue(Color2);
if ((r1-r2)+(g1-g2)+(b1-b2))>100 then result:=true;
end;

procedure paintSnow(h:hDC);
var
i:integer;
x,y:integer;
color_1,color_2:COLORREF;
down_snow:byte;
begin
case 2-random(2) of
1:inc(wind);
2:dec(wind);
end;
if wind>5 then dec(wind);
if wind<-5 then inc(wind);
for i:=0 to high(points) do begin
x:=points[i].X+points[i].crazy+wind;
y:=points[i].Y+1+points[i].speed;
if (y > screenH) then y:=1;//если долетела до низа экрана то отображаем сверху
if (x > screenW) then x:=1;
if (x < 0) then x:=screenW;
color_1:=GetPixel(h,x,y);//цвет будущей точки
color_2:=GetPixel(h,x,y+1);
if (IsContrast(color_1,color_2)) and (color_1<>show_color) //если контраст большой то снежинка упала
then begin
down_snow:=random(1);
points[i].Y:=points[i].Y+down_snow;
points[i].X:=points[i].X;
case (random(2)) of
1: SetPixelV(h,points[i].X,points[i].Y,show_color);
2: begin
SetPixelV(h,points[i].X-1,points[i].Y,show_color);
SetPixelV(h,points[i].X,points[i].Y,show_color);
end;
0: begin
points[i].Y:=points[i].Y-random(3);
SetPixelV(h,points[i].X+1,points[i].Y+1,show_color);
SetPixelV(h,points[i].X,points[i].Y,show_color);
SetPixelV(h,points[i].X-1,points[i].Y+1,show_color);
end;
end;
y:=random(screenH div 4);
end else begin
if GetPixel(h,points[i].X,points[i].Y)=show_color then
SetPixelV(h,points[i].X,points[i].Y,points[i].lastColor);//восстанавливаем цвет предыдущей точки, ранее затертой
points[i].lastColor:=GetPixel(h,x,y);//запоминаем цвет точки который скоро затерем
SetPixelV(h,x,y,show_color);
end;
points[i].X:=x;
points[i].Y:=y;
points[i].crazy:=-points[i].crazy;//добиваюсь того чтобы снежинка летела влево-вправо
end;

end;

procedure init;
var
i:integer;
begin
for i:=0 to high(points) do begin
points[i].X:=screenW-random(screenW);
points[i].Y:=screenH-random(screenH);
points[i].speed:=3-random(2);
points[i].crazy:=1-random(1);
points[i].lastColor:=GetPixel(desktop,points[i].X+1,points[i].Y);
end;
end;

procedure SnowCreateDC;
begin
show_color:=rgb(234,234,255);
wind:=1;
desktop:=CreateDC('DISPLAY',nil,nil,nil);
screenW:=GetSystemMetrics (SM_CXSCREEN);
screenH:=GetSystemMetrics (SM_CYSCREEN);
randomize;
setlength(points,801);
init;
end;

procedure CreateSnowWindow;
begin
SnowCreateDC;
inttostr(high(points));
inttostr(50);
inttostr(wind);
paintSnow(desktop);
end;
Автор: b1t
Дата сообщения: 05.11.2007 10:36
Maks150988
Уменя есть все версии ДЕЛФИ.
Автор: Maks150988
Дата сообщения: 05.11.2007 12:20
b1t
Вам надо скачать LENIN INC WIN32API Library.
Автор: lavren
Дата сообщения: 05.11.2007 13:32
Maks150988

Цитата:
заморочка у меня с таймером

Есть SetTimer в WinApi. Помню когда-то пробовал но исходники не могу найти.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


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