Wake of Gods Forum | Форум Во Имя Богов

Full Version: С++, общая тема
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
GNU C++, код:

Code:
string s;
s = "hellow";
string a;
string b;

Code:
:
  LEA EAX,[DWORD EBP-28]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],-1
  CALL REMOTE.0040A950
  MOV [DWORD ESP+4],REMOTE.0040D01B
  LEA EAX,[DWORD EBP-28]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],2
  CALL REMOTE.0040AF70
  LEA EAX,[DWORD EBP-38]
  MOV [DWORD ESP],EAX
  CALL REMOTE.0040A950
  LEA EAX,[DWORD EBP-48]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],1
  CALL REMOTE.0040A950
  LEA EAX,[DWORD EBP-48]
  MOV [DWORD ESP],EAX
  CALL REMOTE.0040AE10
  LEA EAX,[DWORD EBP-38]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],2
  CALL REMOTE.0040AE10
  LEA EAX,[DWORD EBP-28]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],-1
  CALL REMOTE.0040AE10
  MOV [DWORD EBP-80],0
  JMP L055
  LEA EBP,[DWORD EBP+18]
  MOV EAX,[DWORD EBP-78]
  MOV EDX,[DWORD EBP-74]
  MOV [DWORD EBP-88],EDX
  CMP EAX,1
  JE L043
  MOV EAX,[DWORD EBP-88]
  MOV [DWORD EBP-84],EAX
  LEA EAX,[DWORD EBP-38]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],0
  CALL REMOTE.0040AE10
  MOV EDX,[DWORD EBP-84]
  MOV [DWORD EBP-88],EDX
L043:
  MOV EAX,[DWORD EBP-88]
  MOV [DWORD EBP-8C],EAX
  LEA EAX,[DWORD EBP-28]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],0
  CALL REMOTE.0040AE10
  MOV EDX,[DWORD EBP-8C]
  MOV [DWORD EBP-88],EDX
  MOV EAX,[DWORD EBP-88]
  MOV [DWORD ESP],EAX
  MOV [DWORD EBP-78],-1
  CALL REMOTE.004068A0
L055:
  LEA EAX,[DWORD EBP-7C]
  MOV [DWORD ESP],EAX
  CALL REMOTE.004062C0
  MOV EAX,[DWORD EBP-80]
  LEA ESP,[DWORD EBP-C]
Здравствуй 100 килобайтный файл, медленная компиляция и простыня асм-кода. Это STL.
Угу.
Передача строки в функцию генерирует ещё 12-15 команд ассемблера. Очевидно, голое копирование. Выходит, нет-таки копирования на лету и подсчёта ссылок. Или я ошибаюсь?
Не подскажите как вызвать функцию void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)

Внутри функции void __fastcall TForm1::Button1Click(TObject *Sender)
И притом дважды?

Я не знаю как это делать, но предполагаю что как то так:
Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
            FormMouseDown(Form1, int X, int Y);
            FormMouseDown(Form1, int X, int Y);
}
//[C++ Error] Unit1.cpp(38): E2188 Expression syntax
Ну дык. Вместо int X, int Y нужны две переменные или два значения.
packa, если тебе нужен простой щелчок левой кнопкой мыши, то так:
   
P.S. Чуток переименовал тему.
Вроде бы работает теперь... в общем ошибок больше не выскакивает.
Но я надеялся что он "притормозит" на этих функциях и подождет пока я не кликну два раза.
Ан нет, проскакивает и все по 0.

Code:
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
        i=0;
        bh[i]=X;
        gh[i]=Y;
        i++;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    FormMouseDown(Sender, mbLeft , TShiftState() << ssLeft, bh[0], gh[0]);
    FormMouseDown(Sender, mbLeft , TShiftState() << ssLeft, bh[1], gh[1]);
    Form1->Canvas->Rectangle(bh[0],gh[0],bh[1],gh[1]);
    Edit1->Text= IntToStr(bh[0])+" "+IntToStr(gh[0])+" "+IntToStr(bh[1])+" "+IntToStr(gh[1]);
}
packa, ты бы лучше вообще написал, что именно ты хочешь от программы. Чтобы она реагировала на нажатие кнопки лишь с третьей попытки, что ли?

"Притормаживать на этих функциях" данный код и не должен - поскольку там именно функции, а не события...
Проблемы решилась так(если интересно кому):
Оказалось то что я у вас тут спрашивал совершенно другое) По крайней мере я предпологал что работать будет совершенно иначе...
---
Теперь все что я рисую на Canvas сбрасывается при нажатии на любую кнопку, и\или сворачивание окна.
Какие способы есть предотвратить это кроме как сохранение всего что творится в файл и воссоздание из него все заново?
packa Wrote:Какие способы есть предотвратить это кроме как сохранение всего что творится в файл и воссоздание из него все заново?

Глянь на событие OnPaint - оно срабатывает тогда, когда что-то на форме перерисовывается (в том числе и "при нажатии на любую кнопку, и\или сворачивание окна"). Если тебе нужно, чтобы твой прямоугольник "держался" на форме всегда - тогда рисуй его внутри обработчика этого события....
Разумеется, всё вышеописанное верно именно для борландовского Билдера.
Возможно, кто-то данный прикол и видел - а вот я только узнал 4
В общем, для VС++: создаём h-файл со следующим содержимым: (Click to View)
   
... и инклудим его к своему проекту. После этого Ваш код приобретает новый, абсолютно неповторимый "боярский" стиль! Sm
Например, исходник программы-калькулятора отныне будет выглядеть так:
   
А к билдеру также можно.? Sm
Вряд ли, он наверняка с кириллицей внутри дефайнов не дружит Ab Хотя насчёт новых версий Билдера я не уверен...
А "аминь1" и "спасихоспади1" как получилось? И "какбе" с "ага".
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Reference URL's