Допустим нарисовал я кнопку. И еще, еще...
А как сделать эту обьектно-орентированность (блин, слово то какое) не пойму!
Может кто обьяснит?
Например создаёшь объект типа
Type
TButton
Left:Integer;
Top:Integer;
Width:Integer;
Height:Integer;
Color:Integer;
Procedure Paint;
End;
Procedure TButton.Paint;
Begin
SetBackgroundColor(Color); {или как там оно зовётся...}
Bar(Left,Top,Left+Width-1,Top+Height-1)
End;
Type
TControl=Object
Procedure Paoint;Virtual;
end;
Var
Controls:Array[{...}] Of TControl;
i:Integer;
Begin
For i:=1 To ControlsCount Do
Controls[i].Paint
End.
Хм... На паскале то понятно.
А с ассемблером как быть?
Ну ты загнул. Было у меня дело - писал на асме с ООП, но по памяти не скажу. Посмотрю дома в поннедельник обязательно вышлю. У меня под IDEAL...
Отлично! жду!
Заранее спасибо.
Уже ведь вторник, а обещанного нет. :p2:
Я уже извинился в другом топике - запамятовал (выходные бурные были ) Узелок на ... завязал короче. Завтра притораню.
Ждемс...
Ндя. Особо порадовать нечем. Оказывается поприбивал я всё, что делал под ООП, а книгу спихнул кому-то Зато выжил инклюдер и пару воспоминаний.
SEGMENT VMT_Seg PUBLIC
ENDS VMT_Seg
MACRO VMTSeg
SEGMENT VMT_Seg
ENDM VMTSeg
@VMTSeg = VMT_Seg
MACRO LoadVMTSeg reg
PUSH @VMTSeg
POP Reg
ENDM LoadVMTSeg
MPTR EQU <DWORD>
MACRO MakeVMT
VMTSeg
TBLINST
ENDS
CODESEG
ENDM MakeVMT
MyObject Struc
MyMethod MPTR MyObject_MyMethod
MyObject EndS
VIRTUAL MyFun MPTR MyObj_MyFun
Спасибо, ты мне очень помог.
Не на чем. Если напишешь чего рабочего, выложи, PLZ, кусок кода, чтоб память освежить... А то неправильно как-то: писал, писал, а тут раз и всё забыл...
Нет проблем, как напишу - так покажу
P.S. Если что нть сам вспомнишь выложи.
BlackShadow, что если я напишу модуль компонентов на пасе, смогу ли я использовать потом эти компоненты в своей ос на асме, в граф.режиме. Если да, то как вызывать процедуры из паскалевского модуля?
Давай-ка лучше заново и по-подробнее. Я что-то не особо въехал. Ты спрашиваешь, как использовать процедуру написанную на ASM в паскале? {$L ...) и понеслось. Это ты должен знать. Если наоборот, то EXTERN ...:PROC и поехали.
А если тебе надо из ассемблерного кода поработать с паскалевскими объектами, то это уже другое дело. Рекомендую так: создаёшь класс TObject такого типа:
Type
TObject=Object
Constructor Create;
Procedure Free;
Destructor Destroy;Virtual;
End;
Constructor TObject.Create;
Begin
End;
Destructor TObject.Destroy;
Begin
End;
Procedure TObject.Free;
Begin
Dispose(this,Destroy)
End;
{Creating static object}
PUSH @DATA
PUSH OFFSET InstanceOfMyObject
CALL TSomeObject.Create
{Creating dinamic object}
XOR AX,AX
PUSH AX
PUSH AX
CALL TSomeObject.Create
MOV BX,[WORD PTR InstanceOfMyObject] {Get Offset Of VMT}
MOV AX,@DATA {Segment, where VMT Are Located}
MOV ES,AX
CALL [FAR PTR ES:(BX + 4*MethodNumber)]
PUSH SEG MyObj
PUSH OFFSET MyObj
CALL TObject.Free
Спасибо, далее сам догоню
Уже что то назревает...
Мне не даёт покоя вопрос:"Стоить ли вообще использовать Паскаль? Или все делать на чистом асме?"
На паскале я бы написал ООП и на асме тоже. Но на пасе вроде удобней и наглядней, хотя ОСь написана на Асме. Как то сам не знаю, что хочу
Допустим все компоненты бубут на асме, то как сделать так чтобы их могли использовать другие, но не видели исх.код (библеотека короче). На паскале с этим проблем нет. И стоит ли запихивать компоненты в библиотеку(не библиотека она вовсе, а просто файл с процедурами) API функций?
И вообще на каком языке лучше писать ОС?
А зачем тебе понадобился паскаль? Лень графику делать?
Нет просто удобнее работать
Так все таки лучше, вообше паскаль не трогать?
P.S. Посмотри моё пред последнее сообщение, оно было отредактировано до того как я увидел твоё сообщение.
Да хоть на басике пиши
Чем паскаль удобнее асма?
Бррр...
Короче на чистом асме писать буду и точка
Теперь все заново и попорядку:
Как писать компоненты? Я имею ввиду, стоит ли делать каждый компонент отдельным файлом или все их запихать в один общий файл, а может вообще всё в библиотеку API функций.
1). А что ты подразумеваешь под компонентом?
2). Как тее удобней. Мне бы было проще распихать их по файлам, а линковать вместе.
3). Ты сначала определись как ты свои API экспортировать будешь.
Ладно, разберусь как нибудь. Тема закрыта