20:18

Тотальная неудачница и убийца жёстких дисков.
#post-id: 3057-00-08
#original-date: 8.12.2008 Mon
#original-time: 12:08 AM
#original-day:  3057
#original-host: WinXP Prof SP2 (Build 2600)

Нашла в своём древнем коде вот такую макаронину:



Сижу и пытаюсь понять, что это и зачем оно нужно...

#music: maiko\SUPER EUROBEAT presents Initial D 4th Stage D Selection +\Don't Go Baby

Комментарии
07.12.2008 в 22:29

The day that you stop running is the day that you arrive.
щас найду дескриптор, а потом кээээк освобожу!
08.12.2008 в 06:55

я однажды тоже написал на 1с
ТекВалюта = ТекВалюта;
потом когда через месяц наткнулся весь день нервно хихикал.
08.12.2008 в 07:41

Тотальная неудачница и убийца жёстких дисков.
neo_rage

Оказалось, что я позже передавала уже освобождённый hDCScreen в GetDeviceCaps()... До сих пор в шоке, программирование по-русски: код успивает выполниться до реального освобождения >_<

Vault13boy

В книжке про то как не нужно писать на C++ был вопрос, зачему нужен такой код:



Оказалось, что программеру нужно было debug break поставить на пятисотой итерации ^^
08.12.2008 в 08:25

не, кстати с точки зрения 1С такой код вполне осмыслен.
Например в некоторых внешних обработках, которые работают в разных конфигурациях используется такой прием:
необходимо узнать, определена ли в глобальном модуле переменая глКаталогПечФорм, содержащая путь к папке с печатными формами на диске, и если определена, то поместить\взять печатную форму по этому пути. Дело в том что автор обработки заранее не знает в какой конкретно конфигурации будет открыта его обработка, и если будет проверять переменную явно:
Если ПустоеЗначение(глКаталогПечФорм)=1 Тогда
...
КонецЕсли;
то 1с в режиме Предприятия выдаст ошибку компиляции "Переменная глКаталогПечФорм не определена." Так же нельзя присвоить ее другой переменной
ТемпПеременная = глКаталогПечФорм;//будет та же ошибка

Тогда кто то из 1сников додумался до гениальной конструкции:
глКаталогПечФорм = глКаталогПечФорм;

а затем уже ее проверяли как обычно:
Если ПустоеЗначени(глКаталогПечФорм)=1 Тогда
...
Таким образом, если переменная уже была определена в Глобальном модуле, то ей присваивалось ее же значение и фактически значение не менялось. И с точки зрения семантики 1С ошибки не было, т.к. если переменная не была до этого объявлена, то в первую очередь просиходило неявное объявление присваиванием "глКаталогПечФорм = ", переменная инициализировалось пустым значением, а потом в эту переменую записывалось собственно это же пустое значение)).

Ну а конкретно в моем случае, "ТекВалюта = ТекВалюта;" я просто тогда торопился, функция в которой это использовалось принимала аргумент с именем Валюта, я хотел этот аргумент сохранить в другой переменной, поэтому добавил префикс "Тек", потом понадобилось сохранять и эту переменную, добавил еще какой то префикс, ну а через полчаса я уже подзапутался в префиксах, где то забыл префикс исправить, в итоге , через некоторое время обнаружил, что хотел сохранить переменную в самой себе >_<

...
чето меня седня понесло ^___^
08.12.2008 в 08:40

Тотальная неудачница и убийца жёстких дисков.
Вот за это и нелюблю 1С ^^' Этот встроенный язык явно писали люди с альтернативным мышлением ^^'
08.12.2008 в 08:52

я бы даже немножнко перефразировал: "... с «альтернативой» мышлению".
Сам не навижу 1С. Но приходится работать с тем, за что платят((
08.12.2008 в 10:37

Тотальная неудачница и убийца жёстких дисков.
Вот что бывает когда компания отказывается лицензировать движок VBA и начинает изобретать велосипед...
08.12.2008 в 11:31

The day that you stop running is the day that you arrive.
да уж, точно по-русски...