Оказывается, есть забавный червь, который заражает Delphi, да так, что все скомпилированные ею программы будут содержать в себе червя. Этот червь просочился в том числе в QIP.
Цитироватьон поражает только установленные Delphi версий 4-7 (включительно)
ЦитироватьНу, если говорить о популярности этой бяки, то я сделал быстрый QIP-опрос знакомых дельфистов и у примерно 30% из них оказалась эта бяка. Т.е. если учитывать, что не у всех стоят старые Delphi, то среди D7-ков эта штука вполне может быть неплохо распространена
http://gunsmoker.blogspot.com/2009/08/delphi-delphi.html
Хаханьки. Зря только автор ничего вредоносного не включил (видать, proof of concept), я бы сделал функцию полного сноса Дельфи через некоторое время :)
И установки Хаскелла взамен, да?
Просто gcc :)
Скоро создам тему "Быдлогринь и его быдлокомменты"
Паскаль и паскалеподобные языки богомерзки и уродливы по своей природе.
С++ рулит!
Цитата: Nekto от октября 27, 2009, 11:28
Паскаль и паскалеподобные языки богомерзки и уродливы по своей природе.
С++ рулит!
У-у-у, какая толстота! Сметана была явно жирнее 25 %. ;)
Цитата: Алексей Гринь от октября 26, 2009, 22:36
Этот червь просочился в том числе в QIP.
(http://www.kolobok.us/smiles/standart/scare.gif) Я же пользуюсь этим поделием!
Мой антивирь ничего не нашёл. :what:
Цитата: Алексей Гринь от октября 27, 2009, 01:25
Просто gcc :)
При желании такое можно сварганить для любого инструментария.
Цитата: myst от октября 27, 2009, 13:46
При желании такое можно сварганить для любого инструментария.
Если бы да кабы — вот будет прецедент, посмотрим.
Уже слышал. И даже проверял - ничего. Забыли отметить, что новые версии квипа (а та уже жутко стара, и та заметка) не содержат. А вы не указали :negozhe:
Delphi - хорошо, C++ тоже хорошо, но слишком неудобно по мне совмещать VCL и Си. А в новых версиях Delphi и перегрузка операторов, и всякие другие вещи появляются.
Дискутировать о языках - тот ещё холивар, по опыту, как и холивары о goto и прочему. Просто надо всегда знать меру. Полюсы никого не красят.
Delphi ещё жив? Офигеть.
Не буду слушать комментарии тех, кто писал менее года на Delphi. Я вот тоже так про C буду говорить, потому что недостаточно его знаю.
Цитата: arseniiv от октября 27, 2009, 19:19
Полюсы никого не красят.
Прочитал «Плюсы никого не красят». ;D
Цитата: arseniiv от октября 27, 2009, 19:19
Delphi - хорошо, C++ тоже хорошо, но слишком неудобно по мне совмещать VCL и Си.
Нафиг VCL, эту кривяку? Qt — и вперёд. Вообще в мире много хороших фреймворков.
Цитата: arseniiv от октября 27, 2009, 19:19
Дискутировать о языках - тот ещё холивар
А я дискутирую не о языках, а о комьюнити, которое получилось вокруг сего продукта. Хотя лично мне чисто субъективно синтаксис поцкакаля мерзок (семантика там такая же...), я не имею ничего аргументированно против.
Вот в России же те же люди живут, что и в Америке — те же хомосапиенсы. А живут объективно хуже. Почему? А потому что не надо путать национальность с менталитетом, то бишь язык/синтаксис с комьюнити.
Мой пост был о том, что пользователи Дельфи (я не пишу — «программисты») настолько — скажем так — невежественны, что у 30% нашёлся этот червь. А ведь Дельфи даже не мейнстрим (популярен только в СССР) — в намного более мейнстримных Си-средах подобных казусов ещё не встречал. Почему? Потому что процент имбецилов там намного ниже.
Цитата: Nekto от октября 27, 2009, 11:28
Паскаль и паскалеподобные языки богомерзки и уродливы по своей природе.
Согласен. Не понимаю, каким нужно быть извращенцем и насколько нужно любить дельфи, чтобы лесенки типа
do begin
if ... then
... begin
... begin
end;
end;
end;
end;
называть чудом читаемости. Лично мне визуально очень сложно определить, какой end относится к какому begin'у (отступ в два пробела - это пистец).
Я конечно понимаю, если задачей стоит написать хелловорлд, то такие лесенки не очень-то вложенные, и, в принципе, жить можно. Но если дело касается каких-то довольно-таки сложных математических алгоритмов, то тут-то начинается настоящий вырвиглаз. Сишные { и } визуально превосходные маркеры начала и конца, они прекрасно выделяются среди прочего кода.
Бейсик в этом плане и то лучше.
А уж если говорить об аккуратности оформления — в том числе naming convention — большинства паскалекода, то блевотнее его не найти (хотя нет, соперничает с бейсиком).
Цитата: Nekto от октября 27, 2009, 11:28
С++ рулит!
Не согласен, он уродлив. Ничего лучше нету голого си :)
:??? По этой логике пользователи Васика должны быть съедены вирусами.
Басик всю жизнь был интерпретируемым, там так не сделать (муторнее).
Тем более никакой единой среды под него нету, в отличие от Дельфе. Зоопарк же. В каждом зоопарке свои порядки.
Блоки — в топку, рамочные конструкции — руль!
Цитата: Алексей Гринь от октября 29, 2009, 18:52
Басик всю жизнь был интерпретируемым, там так не сделать (муторнее).
Я имею в виду ВижуалВасик.
Цитата: myst от октября 29, 2009, 18:53
Я имею в виду ВижуалВасик.
ВижуалБасик 99% времени использовался как средство для решения неких мелкиъ внутрикорпоративных задач (скриптики, утилитки). Программ — вот чтобы распространяться по миру семимильными шагами и заражать всё и вся — как бы и не было почти.
Цитата: Алексей Гринь от октября 29, 2009, 18:56
ВижуалБасик 99% времени использовался как средство для решения неких мелкиъ внутрикорпоративных задач (скриптики, утилитки).
Скриптики?! :o :uzhos:
Цитата: Алексей Гринь от октября 29, 2009, 18:56
Программ — вот чтобы распространяться по сети — как бы и не было почти.
Кое-что встречается, Vopt, например, DéjàVu, ещё что-то...
Цитата: myst от октября 29, 2009, 18:58
Скриптики?! :o :uzhos:
Visual Basic for Applications
Цитата: myst от октября 29, 2009, 18:58
Кое-что встречается, Vopt, например, DéjàVu, ещё что-то...
А где об этом почитать?
Цимес ещё в том, что в басике нету либ для статической линковки (а дельфе похекали их). Разве что курочить рантаймовый dll, но таким образом можно сделать бобо только кокнретным юзерам, девелопера не сломить... Короче, авторам надо лезть в дебри компилятора, а учитывая всю эту их перемуженную архитектуру, дело сложное и нафиг нужное.
Цитата: Алексей Гринь от октября 29, 2009, 19:04
Цимес ещё в том, что в басике нету либ для статической линковки (а дельфе похекали их).
Вот про ето не в курсе.
Цитата: Алексей Гринь от октября 29, 2009, 18:43
Лично мне визуально очень сложно определить, какой end относится к какому begin'у
Например, я begin-end'ы не называю чудом читаемости. Но язык не может быть сразу хорош или плох во всём.
Насчёт цитируемого - есть рекомендация писать в таких многовложенных блоках комментарий, чей это end. Кстати, а в
a {
b {
c {
d {
e {
}
}
}
}
}
вы не запутываетесь?
Цитата: Алексей Гринь от октября 29, 2009, 18:43
они прекрасно выделяются
и чрезвычайно похожи (если холиварить)
naming conventions тоже кому что. sumofproducts хуже sumOfProducts. Не знаю, какой из двух вариантов распространён, но для си-подобных языков мне ближе второй.
Почему на си пишут более грамотно, вы и сами знаете - на нём легче ошибиться
неграмотному. Да, никто не сравнится с этим синтаксисом в написании компактных выражений, тоже. Но везде есть минусы.
C++'овское <dynamic_cast> и подобные коробят. (Но вроде их не так часто приходится использовать?) Но #define вместо нормльных констант и inline-функций тоже не айс.
Вообще, лучше составлять подробнейшую таблицу и уж по ней сравнивать
Цитата: arseniiv от октября 29, 2009, 20:38
Но #define вместо нормльных констант и inline-функций тоже не айс.
:o :o :o :o :o :o
:o В C++-то?! :o
:o :o :o :o :o :o
Цитата: Nekto от октября 27, 2009, 11:28
Паскаль и паскалеподобные языки богомерзки и уродливы по своей природе.
С++ рулит!
та же хрень вид сбоку
Цитата: Алексей Гринь от октября 29, 2009, 18:43
насколько нужно любить дельфи, чтобы лесенки типа
do begin
if ... then
... begin
... begin
end;
end;
end;
end;
кто заставляет такие лесенки строить?
Цитата: addewyd от октября 29, 2009, 20:50
кто заставляет такие лесенки строить?
Алгоритм
Цитата: arseniiv от октября 29, 2009, 20:38
a {
b {
c {
d {
e {
}
}
}
}
}вы не запутываетесь?
У меня так:
bla blablabla()
{
if(blabla == blabla)
{
blabla();
bla(blabla, 0);
if(blaabla != blabla)
blablabla();
}
}
В паскалях типа так:
procedure blablabla(): bla
begin
if blabla = blabla then
begin
blabla();
bla(blabla, 0);
if blaabla <> blabla then
blablabla();
end;
end;
Вот фиг знает, первое намного читабельнее, во втором случае визуально бегины и енды оч плохо отличимы от имён переменных и функций, вырвиглаз же
Неговоря уже о том, что приходится писать руками в 3-5 раз больше буков
Они же цветом выделяются! :D
Асм рулит:
MOV AL, 3
MOV EBX, EAX
XOR AH, AH
MOV AL, 3
MOV BX, AX
XOR EAX, EAX
MOV AH, 3
MOV EBX, EAX
SUB EBX, EBX
MOV BL, DL
MOV ECX, EBX
MOV EBX, 0
MOV BL, DL
MOV ECX, EBX
MOV BL, DL
XOR EBX, EBX
Цитата: Алексей Гринь от октября 30, 2009, 01:48
Вот фиг знает, первое намного читабельнее, во втором случае визуально бегины и енды оч плохо отличимы от имён переменных и функций, вырвиглаз же
(выделено мной)
Если вы пишете
в Блокноте ;D В "нормальных" средах всегда ключевые слова вяделяются (а у вас не выделяются? :o)
А, уже Karakurt сказал.
А первое - скорее всего дело привычки. Я {} так же хорошо читаю, как и begin...end. Вроде бы :donno:
Цитата: myst от октября 29, 2009, 20:41
:o :o :o :o :o :o
:o В C++-то?! :o
:o :o :o :o :o :o
Ну, в том предложении Алексей Гринь говорил, что C лучше C++...
Цитата: arseniiv от октября 30, 2009, 14:37
В "нормальных" средах всегда ключевые слова вяделяются
Говорили о языке, теперь снова о среде. Воистину поцкакалисты не отличают язык от среды.
Предлагаю вариант — использовать ключевые слова begin, bgein, end, nde, edn, ebgin, но для наглядности в среде раскрашивать в разные цвета (розовый, малиновый).
;D
Извините, что привёл среду, но и вы сказали, что эти слова схожи с просто идентификаторами - входя в зависимость от сред, потому что кто знает, может, в гипотетической среде набранные ключевые слова превращаются в смайлики?
Просто на деле получается невнятный костыль (якобы для улучшения читаемости), который прикрывается другими костылями (подсветка в IDE, якобы архикрутая фишка). Смысл? Легче сразу перейти на Си :)
Цитата: Алексей Гринь от октября 30, 2009, 01:48
Вот фиг знает, первое намного читабельнее, во втором случае визуально бегины и енды оч плохо отличимы от имён переменных и функций, вырвиглаз же
Вырвиглаз лечится нормальным форматированием исходного текста. Это справедливо для любого языка.
Цитата: myst от октября 31, 2009, 22:50
Вырвиглаз лечится нормальным форматированием исходного текста
По моим наблюденим, у дельфифилов отступ стандартно равен двум пробелам, а это вырвиглаз.
Цитата: Алексей Гринь от ноября 1, 2009, 02:40
По моим наблюденим, у дельфифилов отступ стандартно равен двум пробелам, а это вырвиглаз.
Ладно хоть не один. :)
Два пробела может, потому, что такой в справке ;D
А мне и двух пробелов хватает, три не нравится, а четыре — для меня вырвиглаз. Стоит только достигнуть небольшой вложенности, как эти четырёхпробельные строки улетают далеко-далеко...
Вообще, среди плохих программистов (что есть, то есть — среди пользователей Delphi их больше (хотя сравнить с Васиком... ::) )) отступы не приняты. Жаль, конечно...
Кстати, один пробел — для меня то же, что и четыре.
Пробелы — это ещё не всё.
Конечно же, нет. Но они уже должны быть обязательными. :)
Кстати, это сказки, что в Pascal (а уже в нём было) and и or сравнение производят до конца. В "0 and A" A вычисляться не будет.
Цитата: arseniiv от ноября 1, 2009, 15:24
Но они уже должны быть обязательными. :)
Обязательным должен быть целостный стиль.
Цитата: Nekto от октября 27, 2009, 11:28
Паскаль и паскалеподобные языки богомерзки и уродливы по своей природе.
С++ рулит!
С-подобный синтаксис более лаконичен, чем паскалеподобный, содержит больше удобных возможностей, С-подобные языки имеют более продвинутые компиляторы и библиотеки функций, но:
1) синтаксис описания переменных очень неудобен. Что такое int *a[10][10] - это двумерный массив указателей, массив указателей на массивы, указатель на двумерный массив?
2) порядок выполнения операций, не совпадающий в разных реализациях С и С-подобных языков;
3) С-шный switch-case, благополучно перекочевавший во все С-клоны - не что иное, как пережиток эпохи царствования оператора goto. По существу, это не структурированный выбор, как if-then-else или паскалевский case, а переход на метку с последующим выходом через break. Пропуск break ошибкой не является, хотя обычно ведет к ошибочным результатам.
4) ..................
В общем, придраться можно много к чему.
Цитата: arseniiv от ноября 1, 2009, 15:24
Кстати, это сказки, что в Pascal (а уже в нём было) and и or сравнение производят до конца. В "0 and A" A вычисляться не будет.
Implementation-dependent.
P.S. Если уж зашла речь о case, наиболее продвинутым по функциональности является select-case в структурированных бейсиках (Quick BASIC, TurboBasic, VBA и под.), предусматривающий диапазоны, идущие в бесконечность (case is>100). Чуть менее продвинуты паскаль и делфи: есть дипазоны в пределах конкретных значений. В С-подобном синтаксисе диапазон можно задать лишь путем перечисления всех значений, входящих в диапазон.
Цитата: Python от ноября 1, 2009, 16:00
1) синтаксис описания переменных очень неудобен. Что такое int *a[10][10] - это двумерный массив указателей, массив указателей на массивы, указатель на двумерный массив?
Обеими руками да! :up: И этот страшный typedef, совершенно нечайно разобрался, как им пользоваться.
Case в Delphi, кстати, ещё и оптимизируется, и некоторые операторы case работают быстрее аналогичной системы if.
О хорошести языков:
Я вот создаю себе pas-модуль для языка сценариев. Вопреки предположениям, он имеет вообще Scheme-подобный синтаксис. ;D (Но нет типизации, парадигма больше императивная, есть функции-значения; но руки всё ещё не дошли...) Хотя я бы предпочёл JavaScript - но его реализацию для Delphi я не находил (а системно-зависимость мне не нужна).
Цитата: arseniiv от ноября 1, 2009, 16:48
Case в Delphi, кстати, ещё и оптимизируется, и некоторые операторы case работают быстрее аналогичной системы if.
Неужели делфистроители таки осилили эту оптимизацию?
Цитата: Python от ноября 1, 2009, 16:00
2) порядок выполнения операций, не совпадающий в разных реализациях С и С-подобных языков;
Не понял, о чём речь?
Цитата: myst от ноября 1, 2009, 17:02
Не понял, о чём речь?
http://lurkmore.ru/%2B%2Bi_%2B_%2B%2Bi
Цитата: Python от ноября 1, 2009, 17:10
Цитата: myst от ноября 1, 2009, 17:02
Не понял, о чём речь?
http://lurkmore.ru/%2B%2Bi_%2B_%2B%2Bi
:wall: Опять про это?! В стандарте же ясно сказано, что это неопределённость. Низачот.
Зато Жабе зачот.
Цитата: Bhudh от ноября 1, 2009, 18:17
Зато Жабе зачот.
Корка в том, что буквально несколькими сообщениями ранее упоминали паскальную неопределённость. :) Гораздо более неприятную.
Цитата: arseniiv от ноября 1, 2009, 15:24
Кстати, это сказки, что в Pascal (а уже в нём было) and и or сравнение производят до конца. В "0 and A" A вычисляться не будет.
А если я хочу именно a | b, а не a || b? Да-да, я быдлокодер, и у меня куча side-effects! (нопремер)
В Басике же ввели AndAlso и OrElse (в придачу к And и Or).
Цитата: Python от ноября 1, 2009, 16:00
С-шный switch-case, благополучно перекочевавший во все С-клоны - не что иное, как пережиток эпохи царствования оператора goto.
Вы так говорите, как будто goto — это что-то плохое.
Цитироватьсинтаксис описания переменных очень неудобен. Что такое int *a[10][10] - это двумерный массив указателей, массив указателей на массивы, указатель на двумерный массив?
Ну это мелочи и частности. В остальном же очень удобно и лаконично:
int i; /* 6 знаков */
вместо
var i: Integer; /* 15 знаков... */
Вот спасибо, из-за случая непоняток с определением двумерного массива указателей на целое (который встречается < 1%) не хочется мне раздувать код и пальцы в 2 раза в ущерб всему остальному (а это будет >90% случаев). Дельфологика такая дельфологика...
И вообще чего вы хотели от Си, там типизация сделана тупо для более простой выборки нужного байта по нужному смещению.
Я бы вообще массивы отменил, только голая pointer arithmetic! :)
Цитата: Python от ноября 1, 2009, 16:27
P.S. Если уж зашла речь о case, наиболее продвинутым по функциональности является select-case в структурированных бейсиках (Quick BASIC, TurboBasic, VBA и под.), предусматривающий диапазоны, идущие в бесконечность (case is>100). Чуть менее продвинуты паскаль и делфи: есть дипазоны в пределах конкретных значений. В С-подобном синтаксисе диапазон можно задать лишь путем перечисления всех значений, входящих в диапазон.
Ну это да, фиговенько. Но на производительности несказыввается, для нелитеральных значений джамп-тейбл вроде как не сделать :'(
Цитата: arseniiv от ноября 1, 2009, 16:48
Case в Delphi, кстати, ещё и оптимизируется, и некоторые операторы case работают быстрее аналогичной системы if.
Да в Си с давних пор так — через джамптейблы делается. В Си вообще любят всякие хитроумные бинарные оптимизации, дельфисты тут в хвосте тянутся.
Цитата: Python от ноября 1, 2009, 16:00
а переход на метку с последующим выходом через break
Брейк вообще тупой — нет возможности нормально выходить из вложенных циклов (в Жабе пофиксили)
Цитата: arseniiv от ноября 1, 2009, 16:48
этот страшный typedef, совершенно нечайно разобрался, как им пользоваться.
А что с ним не так?
Это хорошая, годная вещь.
Цитата: Python от ноября 1, 2009, 16:00
В общем, придраться можно много к чему.
Самый смешной синтаксис — у богомерзкого с++.
Вспоминается из перлов:
Страуструп был так умён, что не смог научить свой токенайзер отличать >> от > >, в итоге вложенные темплейты надо писать так:
List<List<int> > (с обязательным пробелом! В Сишарпе пофиксили)
Или вот например:
Point p(10, 20); /* это создание в стеке точки */
Point p(); /* это вовсе не создание в стеке точки с нулём параметров */
Point p; /* а вот это уже оно */
Цитата: Алексей Гринь от ноября 1, 2009, 19:00
А если я хочу именно a | b
Тогда берёте и окружаете ваше условие малюсенькими директивами компилятора, и всё готово - опция настраиваемая. Или можете для всего проекта или модулей включать, как душе угодно! (А если вам побитное нужно - оно тоже, конечно, есть, ну вы сами, наверно, знаете.)
Цитата: Алексей Гринь от ноября 1, 2009, 19:00
В Басике же ввели AndAlso и OrElse (в придачу к And и Or)
Угадайте, чем мне больше всего не нравится Барсик? Громоздкостью конструкций! (А ещё ужасным ООП, но то не касается .NET, в который и добавили эти AndAlso, OrElse и прочую кутерьму. Хотя к .NET'у там переделали ужаснейший оператор Dim, но и в новом варианте он всё же слишком - зачем нужно это дурацкое As!)
Цитата: Алексей Гринь от ноября 1, 2009, 19:00
Я бы вообще массивы отменил, только голая pointer arithmetic! :)
Ну так их там и так нет (в C): a
≡ *(a + i) ≡ i[a] ≡ [a]i ≡ a
Цитата: Алексей Гринь от ноября 1, 2009, 19:00
Это хорошая, годная вещь.
Согласен, но если не касаться его синтаксиса (как и синтаксиса указателей на функции с различнейшими параметрами вроде других указателей на указатель на функцию)
Цитата: arseniiv от ноября 1, 2009, 19:33
Согласен, но если не касаться его синтаксиса (как и синтаксиса указателей на функции с различнейшими параметрами вроде других указателей на указатель на функцию)
Не понял мысль. :what:
typedef int (*Strcomp)(char *, char *);
Ну страшно же!
Цитата: Алексей Гринь от ноября 1, 2009, 19:00
Вы так говорите, как будто goto — это что-то плохое.
Всю жизнь меня учат, что goto - это что-то плохое. В Џаве от него даже избавились (правда, переложив все его функции на break с меткой :) )
Цитата: myst от ноября 1, 2009, 20:26
Что же здесь страшного?
А вот определите тип посложнее...
Цитата: Python от ноября 1, 2009, 20:34
меня учат, что goto - это что-то плохое
Надо сделать замену в их учениях на "неумеренность - это что-то плохое" :)
Цитата: arseniiv от ноября 1, 2009, 20:34
А вот определите тип посложнее...
Делать это в несколько этапов не позволяет вера или ненависть к читателю? ;)
C плох тем, что ни рыба ни мясо (недостаточно высокоуровневый и недостаточно низкоуровневый). От того и наслаждаемся сегфолтами, эксплойтами на переполнение стека etc., и в то же время невозможно определить целый тип с нужным порядком байт, например.
Цитата: Алексей Гринь от ноября 1, 2009, 19:00
Вот спасибо, из-за случая непоняток с определением двумерного массива указателей на целое (который встречается < 1%) не хочется мне раздувать код и пальцы в 2 раза в ущерб всему остальному (а это будет >90% случаев). Дельфологика такая дельфологика...
Пусть массив будет одномерным - все равно есть риск разночтения, если не помнишь правила описания на все 100%. Синтаксис неочевиден. В бейсике можно вообще описаний не делать - экономия знаков еще больше получится.
Все было бы намного проще, будь оператор указателя не префиксным, а постфиксным:
int a[10][10]@;
int b[10]@[10];
int c@[10][10];
int i;
a[1][0] = &i;
a[1][0]@ = 13;
Цитата: arseniiv от ноября 1, 2009, 19:33
Согласен, но если не касаться его синтаксиса (как и синтаксиса указателей на функции с различнейшими параметрами вроде других указателей на указатель на функцию)
Да фиг знает, это вам толкьо если при взгляде после долгих лет любви дельфи кажется сложным.
Ничего сложного в каком-нить typedef void(*TimerProc)(Timer* self, long elapsed); ну не вижу я... Я этот синтаксис настолько полюбил, что указатели на функции совсем не тайпдефю, так и оставляю внутри сигнатуры метода целиком (если, конечно, аргументов не очень много), вроде такого:
AGTimer* AGTimer_Create(AGUint interval, AGVoid(*onTick)(AGTimer* self));
Ну ясно же. Если параметров слишком много — это архитектура приложения скорей всего кривая, а не Си.
Цитата: Python от ноября 1, 2009, 20:53
Пусть массив будет одномерным - все равно есть риск разночтения, если не помнишь правила описания на все 100%. Синтаксис неочевиден
Не знаю, зачем может пригодиться массив указателей на целые числа (целое число легче сразу копировать, нежели на него зачем-то ссылаться)... Ситуация надуманная, по-моему.
Цитата: arseniiv от ноября 1, 2009, 19:33
Ну так их там и так нет (в C): a ≡ *(a + i) ≡ i[a] ≡ [a]i ≡ a
Но ведь
char buf[128];
совсем не то же самое, что и
char* buff;
На деле отличия от buff = malloc(sizeof(char) * 128) тут мало, единственное, что буфер создаётся не на куче, а in-place: в стеке или как часть структуры... Т.е. можно было бы, по сути, обойти чем-нибудь типа buff = stackalloc(128). Но си лаконичнее, чем мой перфекционизм :)
Цитата: myst от ноября 1, 2009, 20:52
недостаточно низкоуровневый
Шо сие значит?
Цитата: arseniiv от ноября 1, 2009, 19:33
Согласен, но если не касаться его синтаксиса (как и синтаксиса указателей на функции с различнейшими параметрами вроде других указателей на указатель на функцию)
Если вы так боитесь рекурсии, не программируйте вообще :)
Цитата: Python от ноября 1, 2009, 20:34
Всю жизнь меня учат, что goto - это что-то плохое.
Ой, ну так же и с лекарствами: одна таблетка — лечит, двадцать сразу — калечат.
goto хорош в некоторых нетривиальных случаях. Намного забавнее, когда подобные жабисты вместо одного возможного простого и лаконичного goto лепят огромные бессмысленные if-then-ветления с кучей флагов, которые вырвиглаз и ужас (зато goto не употреблено — мы молодцы).
Цитата: arseniiv от ноября 1, 2009, 19:56
typedef int (*Strcomp)(char *, char *);
NO WAY
А вообще, как я заметил, большую любовь к поцкакалю и дельфям испытывают те, кто им баловался в детстве: в школе или в вузе (как первый ЯП, нопремер). Привитая, так скать, с младых ногтей любовь. Меня это как-то обошло стороной, и с басика я сразу перешёл на си. Посмотрел на эту дельфю, поплевался, пошёл дальше. Никакой психоэмоциональной привязки (от этого проги и сегфолтят) к ним нету, и слава богу. Ничего личного, только холодный расчёт :)
Цитата: Алексей Гринь от ноября 1, 2009, 22:02
Не знаю, зачем может пригодиться массив указателей на целые числа
А если не целые числа, а структуры или еще что-то крупногабаритное?
Цитата: Алексей Гринь от ноября 1, 2009, 22:02
goto хорош в некоторых нетривиальных случаях.
Ты прав, но теговый break всё равно бы не помешал. :)
Цитата: Алексей Гринь от ноября 1, 2009, 22:02
А вообще, как я заметил, большую любовь к поцкакалю и дельфям испытывают те, кто им баловался в детстве: в школе или в вузе (как первый ЯП, нопремер).
Мне это не помогло. ;)
Цитата: myst от ноября 1, 2009, 22:27
Цитироватьbuff = malloc(sizeof(char) * 128)
Цитата: Алексей Гринь от Сегодня в 00:02Цитироватьsizeof(char)
:o
Не понял?
Цитата: Python от ноября 1, 2009, 22:28
А если не целые числа, а структуры или еще что-то крупногабаритное?
У крупногабаритного и подход другой. Уж точно не статические массивы...
Цитата: myst от ноября 1, 2009, 22:27
ЦитироватьШо сие значит?
Именно сие и значит.
Не понял.
Цитата: myst от ноября 1, 2009, 22:31
ЦитироватьА вообще, как я заметил, большую любовь к поцкакалю и дельфям испытывают те, кто им баловался в детстве: в школе или в вузе (как первый ЯП, нопремер).
Мне это не помогло. ;)
А я так и не понял твоей позиции. Ненависть?
Цитата: Алексей Гринь от ноября 1, 2009, 22:32
Не понял?
Просто единицу-то низзя было написать? ;)
Цитата: Алексей Гринь от ноября 1, 2009, 22:32
А я так и не понял твоей позиции. Ненависть?
Я не испытываю чувств к языкам программирования. :)
Цитата: Алексей Гринь от ноября 1, 2009, 22:32
Не понял.
Например, описывая структуру, нельзя управлять выравниванием её полей, про порядок байт многобайтовых числовых типов я уже говорил.
Цитата: myst от ноября 1, 2009, 22:35
Просто единицу-то низзя было написать? ;)
В Plain C размер чара вообще-то равен 4 байтам (точнее литерал) :) Вообще писать прямые значения это не труъ и не кроссплатформенно. Авось на каких платформах (особливо, скажем, во встроенных) какие-то свои правила и ограничения. Не надо так. Да и красивее так: точно видим, что это 128 чаров, а не 128 каких-то непонятных четырьбайтов (или однобайтов — поди вот разберись).
Цитата: Алексей Гринь от ноября 1, 2009, 22:38
В Plain C размер чара вообще-то равен 4 байтам :)
Ты это аккуратней, я чуть семечками не подавился. :negozhe:
Цитата: Алексей Гринь от ноября 1, 2009, 22:38
Вообще писать прямые значения это не труъ и не кроссплатформенно.
sizeof(char) == sizeof(unsigned char) == sizeof(signed char) == 1 по определению. См. стандарт.
Цитата: myst от ноября 1, 2009, 22:42
ЦитироватьВ Plain C размер чара вообще-то равен 4 байтам :)
Ты это аккуратней, я чуть семечками не подавился. :negozhe:
Я сначала пишу, потом думаю. Поэтому у меня почти у каждого поста правки :)
Цитата: myst от ноября 1, 2009, 22:42
ЦитироватьВообще писать прямые значения это не труъ и не кроссплатформенно.
sizeof(char) == sizeof(unsigned char) == sizeof(signed char) == 1 по определению. См. стандарт.
Ну, блин, можно и функцию назвать, допустим, не GetRelativePosition, а что-нибудь типа getrp. И энумерации не использовать, а сразу везде 1, 2, 3 пихать. Компутеру-то разницы нет, но читаемость человекам разная. Короче, sizeof(char) * n точно указывает, что нам нужно n char'ов, а не байтов или ещё чего натайпдефенного. Вот у таких умных, которые хотят сокращать там, где не надо, потом всякие сегфолты и хип-коррапшны вылазят. А у меня они раз в год вылазят.
У меня ещё такая паранойя из-за разницы в ширине wchar_t на разных платформах, а я перфекционист, поэтому если правило применимо к wchar_t, то я его для симметрии применяю и для char...
Цитата: Алексей Гринь от ноября 1, 2009, 22:47
Короче, sizeof(char) * n точно указывает, что нам нужно n char'ов, а не байтов или ещё чего натайпдефенного.
sizeof() определяет размер типа в байтах. Смекаешь? ;)
И ччччо? Ну я его и пихаю дальше в malloc, который принимает количество байтов. Главное — читаемость. Не понимаю ваще, чо не так.
malloc(sizeof(char) * 128) = «выдели мне памяти под 128 чаров»
malloc(128) = «выдели мне памяти под 128 байт»
Неужто не чуешь эзотерической разницы? :)
Цитата: Алексей Гринь от ноября 1, 2009, 22:47
И энумерации не использовать, а сразу везде 1, 2, 3 пихать.
Именованные константы нужны для понимания текста. В данном случае всем известно, что аргумент — размер.
Цитата: Алексей Гринь от ноября 1, 2009, 22:58
malloc(sizeof(char) * 128) = «выдели мне памяти под 128 чаров»
malloc(128) = «выдели мне памяти под 128 байт»
Неужто не чуешь эзотерической разницы? :)
Патамушто её нет. Размер char'а — 1 байт. :yes:
Цитата: myst от ноября 1, 2009, 22:59
В данном случае всем известно, что аргумент — размер.
Но вот только неизвестно, размер какой логической единицы. А sizeof(char) немного проясняет.
Цитата: myst от ноября 1, 2009, 23:00
Патамушто её нет. Размер char'а — 1 байт. :yes:
О да, если у двух типов один и тот же размер — это один и тот же тип. Ну что за глупости
Цитата: Алексей Гринь от ноября 1, 2009, 23:01
Но вот только неизвестно, размер какой логической единицы. А sizeof(char) немного проясняет.
А как же тип указателя, которому присваивается результат?
Цитата: myst от ноября 1, 2009, 23:03
ЦитироватьНо вот только неизвестно, размер какой логической единицы. А sizeof(char) немного проясняет.
А как же тип указателя, которому присваивается результат?
Вот например:
str->bydlo_field.bydlof_field2->sztrfpssdd = malloc(128);
Объясните мне, что такое malloc(128), и для чего оно. Это надо лезть, чо-то смотреть. А с sizeof(char) * 128 становится немного понятней.
Цитата: Алексей Гринь от ноября 1, 2009, 23:01
О да, если у двух типов один и тот же размер — это один и тот же тип. Ну что за глупости
Мы говорим конкретно про char.
Цитата: Алексей Гринь от ноября 1, 2009, 23:04
Это надо лезть, чо-то смотреть. А с sizeof(char) * 128 становится немного понятней.
Для понимания программы тебе неизбежно это понадобится.
Цитата: myst от ноября 1, 2009, 23:05
Мы говорим конкретно про char.
Уж нет, это я говорю про
логический тип char, а ты мне втираешь всё про байты, которыми этот тип
реализуется. Мне вообще должно быть пофигу, как оно там реализуется. Не люблю, когда кишки реализации выставлены там, где не надо (ой-вей, инкапсуляций!).
Цитата: myst от ноября 1, 2009, 23:06
ЦитироватьЭто надо лезть, чо-то смотреть. А с sizeof(char) * 128 становится немного понятней.
Для понимания программы тебе неизбежно это понадобится.
Но надо-таки признать, что sizeof(char) * 128 упростит процесс понимания.
Цитата: Алексей Гринь от ноября 1, 2009, 23:08
Уж нет, это я говорю про логический тип char, а ты мне втираешь всё про байты, которыми этот тип реализуется.
char и есть байт.
Цитата: Алексей Гринь от ноября 1, 2009, 23:08
Но надо-таки признать, что sizeof(char) * 128 упростит процесс понимания.
Масло маслишь.
И ваще бесит: в одном месте у нас malloc(sizeof(Bydlo)), в другом — просто malloc(100)... Нет уж, мы и во втором случае будем придерживаться хуман гуиделинес.
Системность! Орднунг!
Цитата: myst от ноября 1, 2009, 23:15
char и есть байт.
У меня свои закидоны, я рассматриваю Си с точки зрения ООП, и вроде всё нормально, живой ещё.
Для меня char, будучи реализованный как часть строки — в первую очередь логический тип "символ", и только потом какой-то там никому не
всравшийся байт. Алсо, Орднунг!
Цитата: mystchar и есть байт.
Извини, но ты знаешь, как я люблю Юникод:
Цитата: WikiСимвольный тип (Сhar) — простой тип данных, предназначенный для хранения одного символа в определённой кодировке. Может являться как однобайтовым (для стандартной таблицы символов), так и многобайтовым (к примеру, для Юникода).
Цитата: Bhudh от ноября 1, 2009, 23:20
Извини, но ты знаешь, как я люблю Юникод:
Какое отношение эта цитата имеет к C?
Это она сейчас не имеет. А прочтёт сие кто-нибудь лет через x...
Цитата: Bhudh от ноября 1, 2009, 23:24
Это она сейчас не имеет. А прочтёт сие кто-нибудь лет через x...
И?
Здоровье потомков для тебя ничто? :'(
Каким типом шифровать utf8 в сяшечках? Чар == байт? Тогда мы идём к вам!
Цитата: Bhudh от ноября 1, 2009, 23:27
Здоровье потомков для тебя ничто? :'(
Не понял. :what:
Цитата: Алексей Гринь от ноября 1, 2009, 23:27
Каким типом шифровать utf8 в сяшечках?
Тоже не понял, особенно про шифровать.
Цитата: myst от ноября 1, 2009, 23:30
char — это байт.
По ширине — да. Но не логически (про чо я втираю-то)
Я по ширине тоже много на кого похож
Цитата: Алексей ГриньЯ по ширине тоже много на кого похож
Даже интересно стало...
Задолбало короче, мы говорим, похоже, о разных вещах :)
Цитата: Алексей Гринь от ноября 1, 2009, 22:32
У крупногабаритного и подход другой. Уж точно не статические массивы...
Хорошо, что есть С-шным аналогом динамических массивов, используемых в Делфи? То, что в одном языке является стандартным средством, в другом превращается в некое изобретение велосипеда («прострелить ногу несколькими способами, несовместимыми между собой»). Впрочем, ранний Pascal этих средств не имел.
Цитата: Алексей Гринь от ноября 1, 2009, 23:55
Задолбало короче, мы говорим, похоже, о разных вещах :)
Ладно, давай вернёмся к главному — к недостаточной низкоуровневости. :)
Цитата: Nekto от октября 27, 2009, 11:28
Паскаль и паскалеподобные языки богомерзки и уродливы по своей природе.
Вообще то Вирт создавал Паскаль, как чисто учебный язык. Все эти «бигинэнды» должны были просто иллюстрировать процедурный поход. Для практического использования язык не предполагался.
Правда, бывшие студенты, ставшие программистами, часто предпочитали использовать уже знакомый им, пусть и корявый Паскаль, а не изучать новые языки, так он и разошелся по свету.
Цитата: Алексей Гринь от ноября 1, 2009, 22:02
Если вы так боитесь рекурсии, не программируйте вообще :)
Да что мне её бояться. Просто её значимость сильно преувеличена. Она нужна только там, где она родна.
;D (Офф.) Я раз разворачивал себе рекурсивный перебор в глубину в перебор в ширину (хотя там так ничего и не вышло, с кучей оптимизаций - искал путь к решению головоломки; даже теория групп и GAP не помогли ;D)
Цитата: Алексей Гринь от ноября 1, 2009, 22:02
NO WAY
???
Цитата: Алексей Гринь от ноября 1, 2009, 22:02
А вообще, как я заметил, большую любовь к поцкакалю и дельфям испытывают те, кто им баловался в детстве: в школе или в вузе (как первый ЯП, нопремер). Привитая, так скать, с младых ногтей любовь. Меня это как-то обошло стороной, и с басика я сразу перешёл на си.
А я начинал вообще с игрового Васика, ;D потом был страшенный VB6, а Delphi я кидать не собираюсь. Вот как раз приплыла версия 2005, пойду ставить... :-P Перепишу свой старенький-страшненький модуль для матриц, добавив перегруженные операторы... Слишком ли я приземлён? ;D
Подождите, не кричите на меня ( ;D ), я ещё не дочитал новые страницы...
Да бох с ним, с Delphi, он не нужен. Давайте обсуждать негодность С как переносимого ассемблера. ;)
Давайте! Только у меня пока никаких аргументов ещё нет, ни pros, ни cons.
Зато у меня есть. :) Хочу доступ к битам по индексу. Где? Как указывать банк памяти для переменных (стека и сегмента данных явно недостаточно). Как? Где битовое вращение, в конце концов? Колхозная номенклатура базовых типов тоже побешивает. :smoke:
;D Да, надо BYTE, WORD, DWORD, QWORD, OWORD, XWORD, TDWORD, HWORD...
Цитата: arseniiv от ноября 2, 2009, 17:33
;D Да, надо BYTE, WORD, DWORD, QWORD, OWORD, XWORD, TDWORD, HWORD...
Эта номенклатура не менее колхозная.
Батюшки! Так вам BYTE[1], BYTE[2], ..., BYTE{n], ..., BYTE[∞]?
Цитата: arseniiv от ноября 2, 2009, 18:42
Батюшки! Так вам BYTE[1], BYTE[2], ..., BYTE{n], ..., BYTE[∞]?
:o Что это за изврат?
Ну, можете заменить [] на ()... А как надо-то?
Цитата: arseniiv от ноября 2, 2009, 18:47
Ну, можете заменить [] на ()... А как надо-то?
Надо, чтобы наглядно было. В названии должен указываться тип и разрядность. Сам я любитель стиля int8, uint16, flt64 и т. п., но это не принципиально. Главное, чтобы по одному названию было всё понятно.
Я так тоже думаю, но вы же хотите настраиваемость. Поэтому нужны типы int[const uint[1]] и uint[const uint[1]]
Цитата: arseniiv от ноября 2, 2009, 19:00
Поэтому нужны типы int[const uint[1]] и uint[const uint[1]]
Что это такое?
Описание синтаксиса без разделения, где строковые литералы, а где типы выражения, которое можно подставить... ::)
Точнее: это я *шутю так ;D
У Вас таки дар непонятно выражаться. :)
Я специально! ;D
Это, можно сказать, "рекурсивное" "определение" (хотя вообще её даже нет). Надо так (описание в формальной грамматике этого пока фиктивного языка):
UintType → "uint" "[" Выражение_типа_uint[1] "]" // unsigned n-byte int
Вам побитный доступ??
А, понял. Но ведь битами указывать размер - больше места займёт! И не любое число можно быдет задать
Цитата: arseniiv от ноября 3, 2009, 14:02
Вам побитный доступ??
Размер должен указываться в битах, естественно.
Я уже успел поправить предыдущее:
Цитата: arseniiv от ноября 3, 2009, 14:02
А, понял. Но ведь битами указывать размер - больше места займёт! И не любое число можно будет задать
Кстати, так ли это естественно? :???
Цитата: arseniiv от ноября 3, 2009, 14:19
Кстати, так ли это естественно? :???
Куда уж естественней.
Ну, вы вот зададите int[3], а выделится-то вам int[8]! Если только не предусмотреть битовые структуры, которые в Си уже давно есть.
Ну и, кстати, кто мешает написать typedef int int4... А, это недостандартный стандарт.
Цитата: arseniiv от ноября 3, 2009, 17:09
Ну, вы вот зададите int[3], а выделится-то вам int[8]!
Минимально адресуемый блок зависит от железа, и его размер необязательно 8 бит.
Цитата: arseniiv от ноября 3, 2009, 17:09
Если только не предусмотреть битовые структуры, которые в Си уже давно есть.
Я в курсе. Они-то тут при чём?
Цитата: arseniiv от ноября 3, 2009, 17:09
Ну и, кстати, кто мешает написать typedef int int4... А, это недостандартный стандарт.
То, что нет никакой гарантии, что int 4-битовый.
Короче, в кошерном C должен быть механизм создания типов (наподобие адовского), позволяющий управлять внутренним представлением типа (число битов, их порядок, порядок байтов, выравнивание в памяти etc.).
Да, это полезно.
Цитата: myst от ноября 3, 2009, 17:19
То, что нет никакой гарантии, что int 4-битовый.
Так добавилъ же!
Цитата: arseniiv от ноября 3, 2009, 17:09
А, это недостандартный стандарт.
Цитата: myst(наподобие адовского)
Блин, пока понял, что не от
ада, а от
Ады...
А́диного!!!
От ада образуется адский. Адовский, similaires, должен быть от *адова... Притом, неопределённость: адов, адово или даже адова или адовы?
Опять отц носителя учите? :negozhe:
О, наконец-то нашёл о быдлокодерстве Майкрософта (и Максис) из первых уст:
Цитировать«Я впервые услышал об этом от одного из разработчиков популярной игры SimCity, который поведал мне о критической ошибке в их программе: она использовала память сразу после ее освобождения. Главное табу, нарушение которого прощалось в DOS, но карается в Windows, где освобожденную память тут же стащит другое работающее приложение. Тестеры в команде разработки Windows протестировали множество популярных приложений, чтобы убедиться, что все работает без сбоев, но SimCity зависала. Они сообщили это разработчикам Windows, которые дизассемблировали SimCity, шаг за шагом в дебаггере найдя ошибку, и добавили специальный код, проверяющий наличие SimCity в памяти и запускающий распределитель памяти в специальном режиме, в котором SimCity разрешается использовать память после ее освобождения.»
— Джоэл Спольски (известный сотрудник Майкрософта)
Это про какой Windows?
Цитата: Алексей Гринь от ноября 4, 2009, 13:34
«Я впервые услышал об этом от одного из разработчиков популярной игры SimCity, который поведал мне о критической ошибке в их программе: она использовала память сразу после ее освобождения. Главное табу, нарушение которого прощалось в DOS,
Хрень какая-то.
SimCity раньше форточек была разработана...
Цитата: jvarg от ноября 4, 2009, 14:44
SimCity раньше форточек была разработана...
Ну так, в этом и дело.
Цитата: jvarg от ноября 4, 2009, 14:44
Хрень какая-то.
SimCity раньше форточек была разработана...
Перечитайте сообщение. Именно поэтому они сделали костыль в винде, хотя всё могло обойтись обычным каким-нибудь патчем для игры... Короче, не хотели огласки несовместимостей, потому что шла рекламная кампания «ОС для игр»
Цитата: Алексей Гринь от ноября 4, 2009, 13:34
О, наконец-то нашёл о быдлокодерстве Майкрософта (и Максис) из первых уст:
Цитировать«Я впервые услышал об этом от одного из разработчиков популярной игры SimCity, который поведал мне о критической ошибке в их программе: она использовала память сразу после ее освобождения. Главное табу, нарушение которого прощалось в DOS, но карается в Windows, где освобожденную память тут же стащит другое работающее приложение. Тестеры в команде разработки Windows протестировали множество популярных приложений, чтобы убедиться, что все работает без сбоев, но SimCity зависала. Они сообщили это разработчикам Windows, которые дизассемблировали SimCity, шаг за шагом в дебаггере найдя ошибку, и добавили специальный код, проверяющий наличие SimCity в памяти и запускающий распределитель памяти в специальном режиме, в котором SimCity разрешается использовать память после ее освобождения.»
— Джоэл Спольски (известный сотрудник Майкрософта)
Какой адский текст. Кто кого освобождает? Кто чего использует? Ни хрена не понятно. Типа, если была один раз запущен СимСити, её закрыли и открыли заново, она в ту же область памяти лезет?
СимСити 2000 - вещь.
Цитата: злой от ноября 13, 2009, 18:58
Какой адский текст. Кто кого освобождает? Кто чего использует? Ни хрена не понятно. Типа, если была один раз запущен СимСити, её закрыли и открыли заново, она в ту же область памяти лезет?
Вероятно, имелось ввиду, пытается использовать кусок память после освобождения его через free().
Кто-нибудь знает, из квипа можно звонить, как из аси? :) Подружка мне тут вот насущный вопрос задала.
Цитата: Тася от января 8, 2010, 16:27
Кто-нибудь знает, из квипа можно звонить, как из аси? :)
Не знаю, но кнопка есть. :)
Это у телефонного?
Цитата: myst от января 8, 2010, 16:30
Цитата: Тася от января 8, 2010, 16:27
Кто-нибудь знает, из квипа можно звонить, как из аси? :)
Не знаю, но кнопка есть. :)
Да? :what: А я, вот, что-то на какую кнопочку ни навожу, всё не то. У меня qip 2005 года.
Цитата: Тася от января 8, 2010, 17:57
У меня qip 2005 года.
Не пора ли обновиться? ;)
Нет ;D
Цитата: myst от января 8, 2010, 17:58
Цитата: Тася от января 8, 2010, 17:57
У меня qip 2005 года.
Не пора ли обновиться? ;)
У меня этому квипу 4 месяца всего, раньше ася стояла. :) А насчёт звонков с квипа, как я уже сказала, меня подруга спрашивала. Не моя нужда. :)
Цитата: Тася от января 8, 2010, 17:57
У меня qip 2005 года.
Цитата: Тася от января 8, 2010, 18:13
У меня этому квипу 4 месяца всего
:??? Ограбление гробницы?
Не, это у меня стоит 4 месяца, а вообще версия 2005 года. Вот как. :yes:
Цитата: Тася от января 8, 2010, 18:23
Не, это у меня стоит 4 месяца, а вообще версия 2005 года. Вот как. :yes:
Где ж такой раритет удалось откопать? :)
Это нам такие программисты ставят при переустановке программы. :yes: Если помните, несколько месяцев назад у меня были проблемки с компом. :( Ну и вот, в сентябре одновременно с переустановкой мне поставили такой квип. И подружке моей буквально недели две назад сделали то же. :donno:
http://download.qip.ru/qipinfium9032.exe
Спасибо, буду иметь в виду. :) Это самая новенькая версия? :)
myst, как можно звонить с квипа на ПК? Используя скайп или какую-то свою сеть? Или же та кнопка только на мобильных версиях?
Цитата: Тася от января 8, 2010, 17:57
У меня qip 2005 года.
Наверное, дело в том, что эта версия не поддерживает функцию звонка, да? :???
Цитата: arseniiv от января 8, 2010, 18:42
myst, как можно звонить с квипа на ПК?
Без понятия, но несомненно на оффсайте можно узнать правду. ;)
Эээ, вам до него ного рукой подать... А... нда...
Цитата: Тася от января 8, 2010, 18:48
Наверное, дело в том, что эта версия не поддерживает функцию звонка, да? :???
Ну так что? :)
Цитата: arseniiv от января 8, 2010, 19:17
Эээ, вам до него ного рукой подать... А... нда...
Можно подумать, что Вам сутки в автобусе с пересадками ехать. ;)
Цитата: myst от января 8, 2010, 19:43
Цитата: Тася от января 8, 2010, 19:27
Ну так что? :)
Что что? :what:
Нет у этой версии функции звонка, ага? :) Ответьте, пожалуйста. :)
Цитата: Тася от января 8, 2010, 19:46
Нет у этой версии функции звонка, ага?
Нет, но почему бы не поставить Infium? :)
Цитата: myst от января 8, 2010, 19:44
Можно подумать, что Вам сутки в автобусе с пересадками ехать. ;)
Почему бы и не можно. Подумайте :D
(Да-да, злостная игнорация отсутствия вопросительного знака.)
Цитата: Тася от января 8, 2010, 19:46
Нет у этой версии функции звонка, ага? :) Ответьте, пожалуйста. :)
Да кто ж знает-то про этот антиквариат? :donno:
Я знаю. Нет там звонков. Думал, вы про Infium.
Понятно. Спасибо всем Вам. :yes: Щас подружке в аську напишу, чтоб не ломала дальше голову.
Цитата: Тася от января 8, 2010, 19:59
Понятно. Спасибо всем Вам. :yes: Щас подружке в аську напишу, чтоб не ломала дальше голову.
:??? А справку программы нельзя было открыть?..
Можно. :) Но я о ней на время позабыла, так получилось. :donno:
Там есть справка!??!?!!??!!?!??!?!!?!??!!??!?!!?
У меня путь такой: кнопка внизу со значком квипа "Вызвать главное меню" > "О программе" :yes: