- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
var
Form1: TForm1;
i:integer; // глобальные переменные - "общие"
CritSec:TCriticalSection; // объект критической секции
implementation
{$R *.dfm}
procedure ThreadFunc;
begin
while (i<100000) do
begin
CritSec.Enter; // открываем секцию
i:=i+1; //увеличиваем i
Form1.Label1.Caption:=IntToStr(i); //из потока к элементам формы нужно обращаться через имя формы
CritSec.Leave; // закрываем
end;
endthread(0); // красиво выходим из потока.
end;
procedure TForm1.Button1Click(Sender: TObject);
var tid1,tid2,id:longword;
begin
i:=0;
tid1:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id); //запускаем функцию ThreadFunc в потоке
tid2:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id); //в tid2 присваиваем Идентификатор потока, который пригодится позже.
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CritSec:=TCriticalSection.Create; // создаём объект критической секции, на всё время работы программы
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
CritSec.Free; // разрушаем
end;
end.
Уебище, блять, лесное.
http://grabberz.com/showthread.php?t=24619
> beginthread
Это же винапишная функция, просто ее в кривом регистре записали?
И это плохо :( Нечувствительность к регистру развращает людей.
Потому что GetLogicalDriveStrings или get_logical_drive_strings читаются на порядок легче, чем getlogicaldrivestrings. Тебя же не напрягает в русском языке писать пробелы между словами?
Не. Людей развращают ide.
А case-sensitive это просто сишкоблядское говно, экономия на спичках в парсере.
Ну вот с IDE обычно все-таки пишут в том же регистре, как и оригинал. Т.к. автодополнение.
> сишкоблядское говно, экономия на спичках в парсере
Идеально, имхо, было бы совместить достоинства sensitive и insensitive - запретить писать идентификаторы, отличающиеся только регистром букв, и одновременно с этим запретить писать идентификаторы в неправильном регистре:
Об том и речь. ИДЕ мешают любителям case-sensitive запоминать в каком регистре то что они хотели написать.
>запретить писать идентификаторы, отличающиеся только регистром букв, и одновременно с этим запретить писать идентификаторы в неправильном регистре
ЕМПИН, VB сам преобразовывал к тому регистру в котором объявлена переменная. То есть написал сверху
Dim SomeShit as Byte И везде ниже, когда кодер писал переменную someshit, someSHit итп, она автоматически превращалась в нужный регистр. Естественно он это видел.
А хуле там запоминать? Есть же соглашения о именованиях, и их не так уж и много. Никто в нормальном коде не пишет AbSTraCtFacTorY.
Эти соглашения противоречат:
>>запретить писать идентификаторы, отличающиеся только регистром букв
Пример ниже:
>AbsractFactory - класс
>absractFactory - инстанс
Нинужно, т.к. тупой копипаст имени класса ничего не говорит о назначении переменной:
Согласен, это типичный DRY.
Но такого ж кода полно.
И именно IDE автоматически подставляют такие ничего не значащие переменные!
Дык откуда им знать, чего я хочу в этот Point положить, и какие объекты будет запиливать вот эта абсрактная фабрика? Мысли читать они пока не научились... Все-таки первый раз имя переменной надо написать самому.
Да тут скорее трабла не в том, когда сам пишешь, а в тулзах в духе "запили мне функцию по ее вызову", "наебашь мне геттеров, сеттеров и конструктор" или "вот этот код вынеси в функцию". Вот они очень любят придумывать говёные имена, которые потом приходится рефакторить.
ок, предложи нормальные имена, говорящие о назначении переменной, для объектов классов IndexWriter, Connection, etc. Максимум, что можно для них сделать - сократить до writer и conn.
Всегда есть общий код в вакууме, вся польза которого как раз в том, что он ничего не знает о назначении переменных. Половина библиотеки хаскеля так написана (только там имена небось ещё шикарней - x и xs).
Что теперь делать, добавлять префикс T для индикации типа? ;)
Ну в паскале с его регистронезависимостью так и делали. Никого это особо не напрягало.
Еще можно было бы разнести неймспейсы переменных и типов, как в жабе, чтобы все-таки разрешить писать SomeClass someClass. Но тогда всякие sizeof() не смогут работать.
HttpRequest vs URLEncoder.
У VB, емнип, вообще жестокий рестайлинг был. Вроде бы он и отступы сам делал как надо, даже если ты писал их не так, и пробелы втыкал вокруг операторов... Нынешние IDE нервно курят в сторонке...
> и пробелы втыкал вокруг операторов
Такое было, да. Ну и заебись - удобно ж. Главное что это можно было отключить.
AbsractFactory absractFactory = new AbsractFactory();
Первый же гкод в разделе Java.
http://govnokod.ru/15977
MuleClient client = new MuleClient(muleContext);
MuleMessage message =
Я более чем уверен что muleContext имеет тип MuleContext.
Сишнофреник, Паскалю похуй на твой регистр. ПРограммисты Паскаля не заморачиваются маструбацией с регистрами, строками, памятью и указателями , когда пишут код.
Какое описание? Там весь код - одна сплошная ошибка...