Current time: 01.02.2025, 16:50 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
С++, общая тема
Author Message
Berserker Offline
Administrators

Posts: 16714
Post: #1

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.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
23.10.2011 21:32
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #2

Угу.


Welcome!
23.10.2011 21:35
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16714
Post: #3

Передача строки в функцию генерирует ещё 12-15 команд ассемблера. Очевидно, голое копирование. Выходит, нет-таки копирования на лету и подсчёта ссылок. Или я ошибаюсь?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
23.10.2011 22:42
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #4

Не подскажите как вызвать функцию 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


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
01.11.2011 21:56
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16714
Post: #5

Ну дык. Вместо int X, int Y нужны две переменные или два значения.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
01.11.2011 22:16
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #6

packa, если тебе нужен простой щелчок левой кнопкой мыши, то так:
   
P.S. Чуток переименовал тему.


Welcome!
01.11.2011 22:16
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #7

Вроде бы работает теперь... в общем ошибок больше не выскакивает.
Но я надеялся что он "притормозит" на этих функциях и подождет пока я не кликну два раза.
Ан нет, проскакивает и все по 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]);
}


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
01.11.2011 22:48
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #8

packa, ты бы лучше вообще написал, что именно ты хочешь от программы. Чтобы она реагировала на нажатие кнопки лишь с третьей попытки, что ли?

"Притормаживать на этих функциях" данный код и не должен - поскольку там именно функции, а не события...


Welcome!
02.11.2011 12:06
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #9

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


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
(This post was last modified: 02.11.2011 12:42 by packa.)
02.11.2011 12:27
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #10

packa Wrote:Какие способы есть предотвратить это кроме как сохранение всего что творится в файл и воссоздание из него все заново?

Глянь на событие OnPaint - оно срабатывает тогда, когда что-то на форме перерисовывается (в том числе и "при нажатии на любую кнопку, и\или сворачивание окна"). Если тебе нужно, чтобы твой прямоугольник "держался" на форме всегда - тогда рисуй его внутри обработчика этого события....


Welcome!
02.11.2011 13:04
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #11

Разумеется, всё вышеописанное верно именно для борландовского Билдера.


Welcome!
04.11.2011 15:29
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #12

Возможно, кто-то данный прикол и видел - а вот я только узнал 4
В общем, для VС++: создаём h-файл со следующим содержимым: (Click to View)
   
... и инклудим его к своему проекту. После этого Ваш код приобретает новый, абсолютно неповторимый "боярский" стиль! Sm
Например, исходник программы-калькулятора отныне будет выглядеть так:
   


Welcome!
11.11.2011 20:13
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #13

А к билдеру также можно.? Sm


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
11.11.2011 20:46
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6184
Post: #14

Вряд ли, он наверняка с кириллицей внутри дефайнов не дружит Ab Хотя насчёт новых версий Билдера я не уверен...


Welcome!
11.11.2011 21:03
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #15

А "аминь1" и "спасихоспади1" как получилось? И "какбе" с "ага".
(This post was last modified: 11.11.2011 21:37 by Sav.)
11.11.2011 21:36
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group