1. Pascal / Говнокод #14318

    +80

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    procedure WriteString(ST: Ansistring);
    var
      leng: dword;
      I: dword;
      ss: Ansistring;
      stk: Ansistring;
    begin
      leng := Length(ST);
      for I := 1 to leng do
      begin
        ss := Copy(ST, I, 1);
        stk := stk + ss;
      end;
      filestream1.Write(stk[1], Length(stk));
    end;

    Процедура записи строки в файл.
    Использование:

    var
    filestream1: TfileStream;

    begin
    filestream1 := TfileStream.Create('file.dat', fmcreate);
    WriteString('bla bla bla');
    filestream1.Destroy;
    end;

    Запостил: ka3ax, 06 Января 2014

    Комментарии (216) RSS

    • > Ansistring
      21 век на дворе, юникод кругом, и только дельфины продолжают грызть кактус...

      > filestream1 := TfileStream.Create('file.dat', fmcreate);
      > WriteString('bla bla bla');
      > filestream1.Destroy;
      Инкапсуляция на высоте :)

      > Строки 8-13
      Интересно, а зачем автор посимвольно копирует строку перед записью в файл? Он как-то этот момент пояснил?
      Ответить
      • С дельфей 7 сейчас происходит то, что когда-то с VB6: она превращается в средство не разработки, а обучения. Потом многие переходят на другие среды - как раз таки из-за отсутствия поддержки юникода.
        Ответить
        • Жава тоже среда обучения, но на ней и писать можно, хоть и не-интырпрайз уныловат.
          Ответить
      • он строку собирает сказал
        Ответить
        • > он строку собирает
          Гы, а он логичен. А мы то и не заметили, что он строку собирает :)

          Тут вопрос в другом - нахрена строку разбирать на символы и собирать из нее еще одну точно такую же? :) Почему бы просто не записать первую, которая st, без всех этих махинаций?
          Ответить
      • показать все, что скрытоvanished
        Ответить
    • ss := Copy(ST, I, 1);
      stk := stk + ss;

      много же в этом смысла
      Ответить
      • Ответить
        • Но больше всего меня радует, что вокруг каждой записи в фаил идет пляска с созданием и удалением потока.
          Уж либо все в один метод, либо поток создается при первом обращении и диспозится в конце работы модуля
          Ответить
          • Ну я так понимаю, что между созданием и закрытием потока будет все-таки не одна запись, а например цикл :) А это просто пример.

            Хрен бы с ним с созданием потока, ты посмотри в какую переменную его нужно помещать, чтобы WriteString нормально отработал... Чудеса инкапсуляции ;)
            Ответить
            • лол.

              это не только инкапсуляция, это еще и высокое зацепление. )
              Хотя да, ооп и делфи...
              Ответить
              • > ооп и делфи...
                Да вполне адекватное там ООП, просто большинство дельфинов его не осилило, и никогда не сможет запилить свой класс (за исключением автосгенеренных TForm1, TForm2 и т.п.), что уж говорить о своем компоненте... Многие даже Form1 и Button1 во что-то более вменяемое не догадываются переименовать...

                Так что правильней говорить так - ООП и дельфины.
                Ответить
                • а ведь есть еще и паралелька с асинхронкой... бедные дети.
                  Ответить
          • >>Но больше всего меня радует, что вокруг каждой записи в фаил идет пляска с созданием и удалением потока.
            Стрим - не поток в буквальном смысле, к потокам вообще никакого отношения не имеет. Это обертка над файловыми функциями винды, такими, как CreateFile/SetFilePointer, и т.д.
            Ответить
            • > к потокам вообще никакого отношения не имеет
              Как это не имеет? Это самый настоящий поток ввода-вывода, аля stream (не путать с потоком исполнения, нитью, аля thread).
              Ответить
              • Спасибо, кэп, я об этом и говорю.

                раз уж Вы здесь, посоветуйте, как сделать так, чтобы регулярка не хватала токены, отдаленно похожие на прокси:
                333.666.222.555:8080
                я делаю так:
                \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1, 5}
                Ответить
                • А не проще будет потом просто дофильтровать их в паскальном коде? Просто регулярками проверять на диапазоны довольно геморно, хотя и возможно.
                  Ответить
                  • А можно все таки образчик? Хоть намекните, если Вас не затруднит.
                    Ответить
                    • (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3 }):(\d{1, 5})

                      Скобки захватят значения. Как их достать со стороны делфи - смотри в документации к библиотеке с регулярками, которую юзаешь. Что-нибудь в духе r.group(1).

                      Ну а дальше тупо TryStrToInt и проверка на 0..255 и 0..65535. Вот и все.
                      Ответить
                    • А насчет проверки диапазонов на регулярках... Хе-хе, ну ты сам напросился...

                      Вот моя говнопрога на хаскеле, которая генерит такое регулярки, ибо руками писать их совсем уж влом: http://govnokod.ru/13674.

                      Для 0..255 регулярка будет [0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]

                      Для 0..65535 будет [0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]

                      Я думаю после этого тебе не захочется проверять число на попадание в диапазон при помощи регулярок :)
                      Ответить
                      • >>думаю после этого тебе не захочется

                        Совсем напрасно. Как только одолею - только на них и буду опираться при парсинге. Спасибо.
                        Ответить
                        • > только на них и буду опираться при парсинге
                          Не стоит ;) Во многих случаях регулярки не самый лучший инструмент.

                          Например JSON и XML и HTML лучше разбирать готовыми парсерами, чем писать свой велосипед. По крайней мере от кучи граблей эти парсеры тебя уберегут.

                          А для достаточно сложных грамматик (например если ты пилишь свой скриптовый язык) есть генераторы парсеров типа flex/bison, antlr и им подобных...
                          Ответить
                          • и COCO/R

                            казалось бы причем тут царь...
                            Ответить
                          • >А для достаточно сложных грамматик (например если ты пилишь свой скриптовый язык) есть генераторы парсеров типа flex/bison, antlr и им подобных...
                            лучше ли заюзать какой-нибудь lua
                            Ответить
                            • > лучше ли заюзать какой-нибудь lua
                              Конечно лучше.

                              Но вдруг очень-очень надо написать свой язык или извратный формат конфига? :)
                              Ответить
                    • Мож на форум перейдем?

                      У вас в говноделфях неужели нет функции strtoip?

                      Раз уже затронули тему регулярок: знает ли кто редактор регекспов, который \d{1,3}\. показывает как \d{1,3}. , т.е. подсвечивает синтаксис и убирает экранирующие бекслеши, а то синдром зубочистки заёбует.
                      Ответить
                      • Как ты можешь так грубо выражаться, даже не въедучи в делфи?

                        >> strtoip
                        Что должна делать эта функция?
                        Ответить
                        • Могу. Преобразует "333.666.222.555" в число.
                          Ответить
                          • Ты идиот, тогда.
                            Готовой нет, но можно попытаться запилить свою. Кстати, первый раз вижу, чтобы IP выводили в число. Обычно отдельный тип пишут.
                            Ответить
                            • >Ты идиот, тогда.
                              Nuclear launch detected.

                              >Готовой нет
                              А если найду? Сходу нашел какой-то модуль, который проверяет ipv4 на валидность.
                              Ответить
                              • И что, чей-то хуемодуль тебе приятнее юзать, чем если бы я его тебе написал? Небось еще и консолечка, я ее маму, бля, топтал.
                                (
                                Ответить
                                • >чей-то хуемодуль тебе приятнее юзать, чем если бы я его тебе написал?
                                  Заберите этого мудака.
                                  Ответить
                                  • Уже забрали, остался ты у разбитого корыта.
                                    (_O_)
                                    Ответить
                                    • я таки написал ему поддержку командной строчки. за что минус, м?
                                      Ответить
                                      • За тупость, уебанство и нежелание учиться.
                                        Ответить
                                        • 1.Тупость зависит от времени суток и душевного тонуса - этим мы все иногда страдаем.
                                          2.Я в одиночку без преподавателя освоил то, чему годами учат в вузах - в чем выражается мое нежелание учиться?
                                          Уебанство - это что, плохие манеры? Лично я считаю, что уебанство - это постинг разного дерьма с анонимной учетки, обусловленный боязнью необходимости ответить за свои слова и упрекание других в том, чего ты не стоишь сам.
                                          Ответить
                                          • Т.к. пароль от учетки анонима находится в свободном доступе, я не могу упрекать в чем-то одного человека, который пишет с нее относительно адекватно, но я обращаюсь к тому, или к тем, кто пользуясь доступностью ее приходит сюда гадить и оскорблять участников: пусть твоя анонимная безнаказанность будет твоим позором, ибо настоящий мужчина не стал бы этим заниматься. Ты лох и позер, я тебя пиздец, как неуважаю.
                                            Ответить
                                          • Вухухухухух! Типа если бы учетка была лично моя, что бы изменилось?

                                            Нежелание слушать людей, которые знают больше тебя. Ебись тогда сам, что я могу сказать.
                                            Ответить
                                            • Ага, я специально пришел сюда чтобы "не слушать людей, которые знают больше меня"... Толсто.
                                              Ответить
                                          • > годами в вузах
                                            если не знаешь - зачем говоришь

                                            обычно в "вузах" не тратят больше 2 семестров на один и тот же язык, и более того, просто используют выбранный язык как иллюстрацию неких технологий - т.е. не учат программировать например на дельфи, а иллюстрируют формошлепство, заодно дают основы ООП

                                            т.к. не больше 2 семестров, это значит 1 пара лекции и 1 пара лабы в неделю максимум - т.е. суммарно 2*16*2*1.5 = 96 астрономических часов

                                            при самостоятельном изучении на дому это сраных 2 недели

                                            продолжаешь гордиться?
                                            Ответить
                                            • >>просто используют выбранный язык как иллюстрацию неких технологий

                                              более того, когда у нас преподавали алгоритмы можно было сдавать на всем, что в уневере компилилось. Конечно были предпочтения типа делфи и шарпа, но и на руби можно было сдавать, никто не выгонял за это. А ответ прост - основная часть программирования - это осознание тонкостей задачи и проектировка решения.
                                              Написать код по блок схеме каждый дурак сможет.
                                              >>т.к. не больше 2 семестров, это значит 1 пара лекции и 1 пара лабы в неделю максимум - т.е. суммарно 2*16*2*1.5 = 96 астрономических часов

                                              Из них ты приходишь на пары через раз, на лабы вообще не ходишь - ибо а че там делать? Дали техзадание - пиши код. В итоге такие предметы как методы оптимизации, на которые я приходил только по праздникам, я учил за 3-4 дня, после этого 2-3 дня писал лабы и сдавал на пять. И не только я так делал.

                                              У универа на самом деле 2 задачи

                                              1. положить какие то основы и выкинуть дребедень.
                                              2 научить быстро и качественно осваивать новый материал

                                              А учить хоткеям в VS и 1000 способам написать синглтон тебя никто не будет

                                              (большая часть адресована стертору и пустоте)
                                              Ответить
                                            • Не знаю, потому, что не учился и гордость тут как бы ни при чем. Одно дело, если ты учишь язык с преподом: слушаешь лекции, и другое если сам, в одиночку. Если и гордиться, то лишь тем, что я в свое время не испугался незнакомого синтаксиса и большого объема материала - стал учить.
                                              Кстати, писать лабы - бесполезное занятие. Большинство даже не въезжают, зачем они их вообще пишут, не говоря уже о понимании поставленной задачи.
                                              Ответить
                                              • > Одно дело, если ты учишь язык с преподом: слушаешь лекции, и другое если сам, в одиночку.
                                                Ты не поверишь... Но очень часто в одиночку лучше.

                                                Толковых и опытных преподов информатики, которые не засирают тебе мозг морально устаревшей и кривой хуйней, а разбираются в теме и могут ответить на любой твой вопрос, не так уж много, особенно в провинции...

                                                В добавок к этому, если препод не сумеет заинтересовать группу, то толком послушать лекцию тебе не удастся, ну разве что ты будешь сидеть на первой парте...

                                                А еще в вузе обязательно встретится куча предметов, которые, скорее всего, тебя не особо заинтересуют. Но вымотают нервы на зачетах и потратят твое время...

                                                Поэтому самообразование в любом случае очень важно (и даже подразумевается учебной программой).

                                                > Кстати, писать лабы - бесполезное занятие.
                                                Ну почему, надо же на чем-то экспу набивать. Не все же могут придумать себе интересную задачку самостоятельно. А чем больше ты думаешь, проектируешь, кодишь - тем лучше.
                                                Ответить
                                                • >>Толковых и опытных преподов информатики, которые не засирают тебе мозг морально устаревшей и кривой хуйней, а разбираются в теме и могут ответить на любой твой вопрос, не так уж много, особенно в провинции...

                                                  Ну тогда мне сказочно повезло - у меня очень хорошие преподы были - всегда слушал с удовольствием, всегда грамотно отвечали на мои вопросы и отправляли на хорошие источники. Ну это в основном физика-вышмат-кодинг. Хотя многим эти преподы не нравились

                                                  Препод по никсам вообще добровольно провел курсы по erland, мне понравилось
                                                  Ответить
                                                • http://govnokod.ru/14318#comment209491

                                                  Рашка-парашка? Спрошу еще раз, это в СНГ везде так?
                                                  Ответить
                                              • >Кстати, писать лабы - бесполезное занятие

                                                Да и вообще код писать -бесполезное занятие. Все проги давно написаны
                                                Ответить
                                            • >1 пара лекции и 1 пара лабы в неделю максимум

                                              Это где так учат? У меня было:
                                              Паскаль - 252 часа
                                              С - 198 часов
                                              Жаба - 210 часов
                                              Все по одному семестру.
                                              Ответить
                                              • в семестре 16 недель
                                                252/16 = 15.75 часов в неделю
                                                т.е. это надо заниматься паскалём примерно 2-3 полных учебных дня из 6 в неделе
                                                так и было??
                                                Ответить
                                                • Хуй знает. Но его было много. А циферки из диплома.
                                                  Выходит где-то 2 лекции, 2,5 семинара и 2,5 лабы в неделю.
                                                  Ответить
                                                  • > А циферки из диплома.
                                                    Так это поди вместе с самостоятельной работой, которую преподы любят приписывать к полным часам ;)
                                                    Ответить
                                            • Дефекат, во-первых, это занятия без работы дома, во-вторых, у тебя есть препод и одногруппники, у которых можно спросить/подсмотреть.
                                              Ответить
                                              • если говорить про конкретно мой опыт - по программированию книжки дали гораздо больше, лучше и быстрее экспы, чем лекции

                                                пример из жизни - на первой же лекции по крестам (между прочим, неплохой) преподаватель порекомендовал книжки, упомянув, что страуструпа не покупайте - слишком сложно будет для вас - я тогда пошёл и назло купил страуструпа и ещё какую то небольшую - за несколько недель чтения я уже знал весь курс семестра и на лекции ходить смысла не стало

                                                на лабах по программированию на любом языке задания были всегда несложные - потому что их ориентировали на средний уровень студентов, а не с целью подзавалить (или дать подзаработать нескольким людям из группы)
                                                Ответить
                                                • Ну так расчитано это все на среднего студента без моска. Я вот тоже когда на шарп переходил мне сказали читать книгу ля основы C#.
                                                  После 50 страниц понял, что кроме хеллоуворда там ничего полезного нет, Начал читать книженцию с грозной препиской "для профессионалов". Которая была понятна и проста
                                                  Так я узнал, что я профессионал
                                                  Ответить
                                                  • А во всем что я читал по питону вообще ни слова не было про метапрограммирование.
                                                    Ответить
                • Ебнуть в ухо сапогом тебе. Группы хватай & проверяй
                  Ответить
                  • Сапогом всегда успеется, ты лучше покажи, как как вытянуть строку "Прокси не найден или используется высокоанонимный прокси" вот отсюда:
                    </u></font></td></tr><tr><td colspan=10><font class=spy1>Прокси не найден или используется высокоанонимный прокси</font></td></tr><tr><td colspan=10>

                    не нахватав при этом лишнего?
                    p/s/ поменьше пафоса, господа.
                    Ответить
                    • /<font.*?>(.*?)<\/font>/ или /<font[^>]*?spy1.*?>(.*?)<\/font>/, если важна строка spy1

                      содержимое font - в 1й группе
                      Ответить
                      • Спасибо, но чуток не то: нужно вытащить именно строку "Прокси не найден или используется высокоанонимный прокси" между тегами. Такая длинная цепочка тегов для того, чтобы можно было составить уникальный шаблон, т.к. теги "<td colspan=10><font class=spy1>" много раз повторяются в тексте, а нужная строка одна. Моя регулярка почему-то хватает и сам шаблон.
                        Ответить
                        • > Моя регулярка почему-то хватает и сам шаблон.
                          Если правильно понимаю, надо выделить нужную группу.

                          Если тупо этот шаблон с точностью до символа, но меняется только строка "Прокси не найден или используется высокоанонимный прокси", то можно использовать 1 группу из:
                          /<\/u><\/font><\/td><\/tr><tr><td\scolspan=10><font\sclass=spy1>(.*?)<\/font><\/td><\/tr><tr><td\scolspan=10>/
                          Ответить
                          • Опять хватает весь шаблон. вот, что выдает регулярка:
                            </u></font></td></tr><tr><td colspan=10><font class=spy1>Прокси не найден или используется высокоанонимный прокси</font></td></tr><tr><td colspan=10>
                            а нужна только сама строка, без тегов.
                            Ок. Наверно, я неправильно формулирую задачу.
                            Ответить
                            • > а нужна только сама строка, без тегов.
                              Но... скобки, группы? С ними должно работать.

                              Как говорил Борманд,
                              Скобки захватят значения. Как их достать со стороны делфи - смотри в документации к библиотеке с регулярками, которую юзаешь. Что-нибудь в духе r.group(1).
                              Ответить
                              • может, это глюк тестера? у меня тестер от автора tregexpr(библиотека регулярок для дельфей)
                                Ответить
                                • > тестера
                                  А он точно умеет с группами работать? Обычно есть test, exec и match. test проверяет соответствие регулярке, а exec/match и из скобок достают.

                                  Я с дельфи не знаком, но в примерах 2 и 3 к самому tregexpr http://regexpstudio.com/TRegExpr/Help/article_bird_eye_view.html они используют TRegExpr.Exec и TRegExpr.Match.

                                  По крайней мере, в ко-ко-консолечке браузера на жс работает (см. второй элемент массива в последней строке):
                                  > var re = /<\/u><\/font><\/td><\/tr><tr><td\scolspan=10><font\sclass=spy1>(.*?)<\/font><\/td><\/tr><tr><td\scolspan=10>/
                                  undefined
                                  > '</u></font></td></tr><tr><td colspan=10><font class=spy1>Прокси не найден или используется высокоанонимный прокси</font></td></tr><tr><td colspan=10>'.match(re)
                                  ["</u></font></td></tr><tr><td colspan=10><font class=spy1>Прокси не найден или используется высокоанонимный прокси</font></td></tr><tr><td colspan=10>", "Прокси не найден или используется высокоанонимный прокси"]
                                  Ответить
                                  • Прошу прощенья, это я сам напутал/глюк тестера. В тестере по умолчанию стоит, вернее, намертво зашит match[0], мне же нужен match[1]. Придется в среде изучать. Спасибо большое за регулярку!

                                    http://muzofon.com/search/joy%20touch%20by%20touch
                                    кстати, послушайте Джоя ;)
                                    Ответить
                        • Потому что ты к группе 0 обращаешься, да?) 0 - это все совпадение) а первые скобочки - это первая группа)
                          Ответить
            • Ты мне тут стим с тредом не путай
              Ответить
          • препод чтобы записать в файл еще одну строку делает filestream1.Seek(base.Size, 0)
            Ответить
      • это такой Валасипед модели Урал
        Ответить
    • procedure TForm1.Button1Click(Sender: TObject);
      var
        fstream:tfilestream;
        str,fname:string;
        fmode:integer;
      begin
        fname:='C:\1234.txt'; //задаем имя файла
        if fileexists(fname)=false then // проверим существование файла перед обращением
        fmode:=fmcreate // если файл не существует, создаем его
        else
        fmode:=fmopenwrite; // иначе открываем в режиме "для записи"
        str:='some string'#13#10; // строчка и символы перевода строки
        fstream:=tfilestream.Create(fname,fmode); // связываем стрим с файлом
        try 
          fstream.Position:=fstream.Size; // переводим файловый указатель в конец записи, чтобы не стереть уже содержащийся текст
          fstream.Write(str[1],length(str)); // добавляем строчку
        finally
        fstream.Free; 
        end;
      end;


      p/s/ Горе Вам, если Вы-преподаватель. Если студенты, имея возможность общаться с преподавателем и задавать ему вопросы, ваяют такие вот глупости - преподавателя нужно гнать в шею. Таково мое мнение.
      Ответить
      • > если файл не существует, создаем его
        т.е. дельфи не умеет сделать это само?
        Ответить
        • Если файлстриму указать имя несуществующего файла и попытаться обратиться к нему в режиме чтения/записи стрим кинет исключение.
          Ответить
          • А fmCreate поди сразу же перетирает существующий файл?

            Тогда вообще жопа полная :( В делфи, получается, нет способа безопасно (при наличии конкурирующих процессов, которые пытаются сделать то же самое) открыть файл для дописывания... Ну разве что через WinAPI...
            Ответить
            • >> (при наличии конкурирующих процессов, которые пытаются сделать то же самое) открыть файл для дописывания...

              есть режимы

              fmCreate If the file exists, open for write access, otherwise, create a new file. Unlike the other constants, which are declared in the SysUtils unit, this constant is declared in tge classes unit.
              fmOpenRead Open for read access only.
              fmOpenWrite Open for write access only.
              fmOpenReadWrite Open for read and write access.
              fmShareCompat Compatible with the way FCBs are opened. Do not use this mode in cross-platform applications.
              fmShareExclusive Read and write access is denied.

              fmShareDenyWrite Write access is denied.
              fmShareDenyRead Read access is denied. Do not use this mode in cross-platform applications.
              fmShareDenyNone Allows full access for others.

              можно, наверно, совмещать режимы, хотя я с этим не заморачивался.
              Ответить
              • >> можно, наверно, совмещать режимы
                Авотхуй. Только что проверил. Все эти режимы кроме fmcreate кидают исключения, если файл не существует, если же комбировать fmcreate с другими режимами (или по отдельности), файл перетирается. Придется, все же, проверять существование файла, иначе никак.

                p/s я немного не понимаю Вас, кэп. Если файла нет, его так или иначе придется создать. Чем это помешает разным процессам читать/писать в файл? Есть режимы же. Просто поставить проверку на сущестсвование и выбрать режим.
                Ответить
                • > Просто поставить проверку на сущестсвование и выбрать режим
                  Жопа в атомарности :) Между вызовами fileexists и open файл могут удалить. Между вызовами fileexists (или try + open) и create файл могут создать, и мы перетрем инфу в нем... И режимы тут никак не спасают.

                  В API операционок для этого специальные флаги при открытии файлов есть - O_CREAT в никсах и OPEN_ALWAYS в виндах.

                  Само собой, что вероятность такого бага очень и очень маленькая, и в типичной дельфийской проге на это всем насрать... 146%,что ты с этими косяками никогда и не столкнешься за всю свою жизнь...

                  Просто я ёбаный параноик ;(
                  Ответить
                  • Да я и сам такой же, вспомнить хотя бы, как из-за кнопок разблокированных кипятился.
                    Не думаю, что это столь плохо ;)
                    Ответить
                    • Ну фиг с ней с ошибкой, она очень редкая, а скорее вообще теоретическая. Но обидно, что приходится писать столько говнокода (как в твоем примере), тупо потому, что разрабы TFileStream поленились добавить пару флажков (например fmOpenOrCreate и fmAppend) и пару-тройку строчек кода. В операционке же весь нужный функционал уже есть...
                      Ответить
                      • Ну это же ООП. Никто не мешает создать потомка TFileStream и добавить в него нужный функционал.
                        Ответить
                        • > Никто не мешает создать потомка TFileStream и добавить в него нужный функционал.
                          Как? :) Ну разве что с нуля переписать егонный Create... И enum с режимами один хрен не расширить...

                          С тем же успехом лучше сделать своего потомка TStream.
                          Ответить
                          • I much prefer to call Windows.CreateFile and specify exactly the flags I want, instead of Delphi's abstraction of them. Then use THandleStream instead of TFileStream.
                            Ответить
                            • Это перевод слов Стертора на английский?
                              Ответить
                              • это как обычно lmgtfy на тему проблемы, на который я трачу меньше 10 секунд
                                Ответить
      • Какой пиздец, прости... В делфи всегда так пишут в файл? Т.е. открытия на append там нет? И атомарного открытия-или-создания без ебли с fileexists тоже нет? Бедняги, как вы там вообще что-то пишете...
        Ответить
        • procedure TForm1.Button1Click(Sender: TObject);
          var
            fileStream: TFileStream;
          begin
               try
                  (* Attempt to open a non-existant file *)
                  fileStream := TFileStream.Create('NOT_THERE.FILE', fmOpenRead);
                  (* Process the file contents... *)
                  fileStream.Free;
               except
                  on EFOpenError do ShowMessage('EFOpenError Raised');
               else
                  ShowMessage('Exception Raised');
          
               end;
          end;


          Это примерчег из справки седьмых дельфей - там они вообще на except исключение ловят.
          Ответить
      • Неа, я не препод, я на старости лет решил бумагу об образовании получить (купить )
        Ответить
    • Я упростил процедуру до такого:
      procedure WriteString(ST: Ansistring);
      begin
      filestream1.Write(st[1], Length(st));
      end;
      Препод в ахуе))
      Ответить
      • Препод должен был ударить тебя палкой и сказать, что так кодить может каждый, а ты должен кодить так, что бы машина стонала
        Ответить
        • Есть несколько его проектов, могу залить куда нибудь. Ссылки здесь можно оставлять?
          Ответить
        • > что бы машина стонала
          Это я сейчас так развлекаюсь. Рисую множества Мандельброта и Жюлиа на GPU. При 10000 итераций на пиксель бедное GPU начинает стонать и крутить вентилятор ;)
          Ответить
          • сожжешь титанчик
            Ответить
            • Да ну, у них же сейчас у всех thermal throttling. Обороты сбавит немного, да и остынет. Ну и охлаждение неплохое, выше 50 градусов на этой видюхе я не видел.

              И это не титанчик, а дохленькая GTX 660.
              Ответить
          • предлагаю лениво обсудить застой в железках
            вот например хотелось бы комп обновить, так интел штампует один шлак, нвидия стоит на месте, а радеон уже четвертый год одно и то же продает, только нумера перерисовывает
            куда катится этот мир...
            Ответить
            • Они ждут, пока проги и операционки подтянутся, и начнут достаточно тормозить. Как иначе заставить юзера покупать новое железо? :)
              Ответить
              • ну меня заебала материнка гигабайтовская
                хочу выкинуть на помойку
                сломала мне харды своим дерьмовым чипсетом
                не грузится со своих же рейдов с первого раза

                отсюда желание обновить все кишки

                где блять ddr-4, какого хуя extreme процы у интела вечно тормозят на поколение от ширпотребного шлака, какого хуя их проц за килобакс должен сосать в чипсете
                какого хуя их хасвельные процы заставляют меня нервно теребить материал про снятие крышки проца, ведь под крышкой птичье дерьмо вместо термопасты
                Ответить
                • птичье дерьмо неплохо проводит тепло.
                  Ответить
                  • wroong!
                    Ответить
                    • Разбираешься в сортах говна?
                      Ответить
                      • нет
                        любое дерьмо плохо проводит тепло

                        реально, для энтузиастов даже выпускают специальные наборы для использования ivy/haswell без крышки (naked ivy)
                        http://www.ekwb.com/shop/ek-supremacy-precisemount-add-on-naked-ivy.html
                        ну куда это годится...
                        Ответить
                        • Ивики не трожь, у меня ивик i5-3570 холодный как собачий нос :)

                          При полной загрузке 4 ядер залмановский пепелац вполне держит его на 50 градусах. Правда через пару минут такой работы обороты достаточно высокие набирает, и шумит.
                          Ответить
                          • так ведь не k же...
                            купи уже нормальный проц да погоняй его на 5Ггц, не позорься
                            Ответить
                            • > k
                              А он K. И материнка позволяет разгон, и память годная и с радиаторами. Их останавливает только один распиздяй, которому уже полгода лень настроить параметры и потестить ;)
                              Ответить
                              • а чего залман купил?
                                ноктуа самое то

                                блин, хочу собраться духом и запилить в новом системнике водянку...
                                Ответить
                                • > блин, хочу собраться духом и запилить в новом системнике водянку...
                                  Тогда уж с полным погружением материнки в дистиллированную воду или вазелиновое масло:)

                                  Бесшумно, не греется, правда есть риск разлить хладагент.

                                  > а чего залман купил?
                                  > ноктуа самое то
                                  Ноктюа заказывать надо было. А залманы неплохие и у нас в городе лежали.

                                  Вот такой вот пепелац: http://market.yandex.ru/model.xml?modelid=6031541
                                  Ответить
                                  • не, не хочу так...
                                    у меня была на курсе 1-2 лаба по физике, где надо было всю лабу в глицериновой трубе шарик ронять, замерять и вытаскивать
                                    до сих пор руки помнят этот пиздец, хоть и прошло уже дохуя лет

                                    не смогу себя пересилить
                                    да и стрёмное рассеивание будет от этого аквариума - надо будет делать стенки ребристыми и не ставить в глухой угол квартиры (чтобы хоть какой-нибудь сквозняк был)

                                    думаю что-нибудь попроще - обычный радиатор на выдув через верх + возможно от немцев стенку http://www.alphacool.com/images/product_images/popup_images/759_0.jpg
                                    Ответить
                                    • @у меня была на курсе 1-2 лаба по физике, где надо было всю лабу в глицериновой трубе шарик ронять,

                                      А ещё были задроченные осциллоскопы, с прыгающим лучом, и престарелые мосты Уитстона.
                                      Ответить
                            • > купи уже нормальный проц да погоняй его на 5Ггц
                              Купил @ погонял:
                              cpu MHz		: 5000.013
                              cpu MHz		: 4999.938
                              cpu MHz		: 5000.266
                              cpu MHz		: 5000.488
                              cpu MHz		: 4999.999
                              cpu MHz		: 5001.996
                              cpu MHz		: 5000.022
                              cpu MHz		: 5000.667
                              cpu MHz		: 5001.747
                              cpu MHz		: 4999.958
                              cpu MHz		: 4999.653
                              cpu MHz		: 5000.124
                              Ответить
                        • Коэффициент теплопроводности дерьма упоминается в ГОСТ Р 53042-2008, однако, таблиц с примерами значений для разных сортов мне найти не удалось. Ссылочками не поделитесь?
                          Ответить
                          • Боюсь, моя любимая "Таблицы значений теплопроводности сортов дерьма" ещё не оцифрована и может быть утеряна :(
                            Ответить
                            • Как, на главном специализированном сайте по говну никто не знает, где скачать таблицы теплопроводности дерьма? Безобразие!

                              На данный момент располагаю информацией, что смесь навоза с соломой обладает низкой теплопроводностью, поскольку:
                              1. Куча может самовозгораться из-за протекающих химических реакций.
                              2. Под кучей даже летом можно обнаружить лёд или снег, если её клали зимой.

                              Но пока более точных данных нет, имею подозрение, что низкая теплопроводность обусловлена соломой. Где бы найти данные по чистому дерьму?
                              Ответить
                            • показать все, что скрытоvanished
                              Ответить
                • Юзать панели Пельтье религия не позволяет? Я чуть не обосцался, когда прочел, как они работают. Полупроводники подчинили себе мир.
                  Ответить
                  • > Юзать панели Пельтье религия не позволяет?
                    Там на хасвеллах между кристаллом проца и его крышкой теплопередача плохая. Народу приходится разбирать проц и менять теплопроводящую херню :) Элементы пельте тут не особо помогут. Разве что если их засунуть между кристаллом и крышкой.
                    Ответить
      • Эта процедура НЕ нужна. Либо создавай стрим внутри ее, либо обходись без процедуры. Ты пристраиваешь лифт снаружи дома, ты понимаешь?
        Ответить
        • Еще можно передать стрим аргументом в процедуру.

          Но в данном состоянии я солидарен со стертором, процедура - сраное говно.
          Ответить
        • http://www.afonsk.ru/index1/2/images/6.jpg
          Ответить
    • Вот вам проекты моего препода на растерзание:
      Этот на делфи. Вроде требует SQL Server. Но я думаю знающие люди оценят квалификацию моего уважаемого преподавателя.
      http://yadi.sk/d/AcndhxgNFbP7N

      А эти два помоему на бейсике, препод со слюнями у рта кричит что это его 3Д и 2Д движки собственной разработки. Я делаю вид, что ему не верю что это возможно, а он бедный аж на говно исходит. Компилятор мне неизвестен, но не беда - экзэшники препод оставил
      http://yadi.sk/d/Q2IORhp3FbP96
      http://yadi.sk/d/iEq_cCjLFbP9n
      Ответить
    • Вам необходимы парсеры или база электронных ящиков с вебсайтов? <a href=http://parsinfo.ru/products/parser_2gis>активация парсер 2gis ver 4 6</a>. Вы желаете купить граббер или базу e-mail оптово-розничных магазинов? Тогда вы попали туда, куда нужно!

      На страницах нашего сайта вы найдёте парсеры и грабберы для маркетинга, приобрести информацию с базами контактов и e-mail. <a href=http://parsinfo.ru/products/parser_2gis>купить рарсер 2 гис</a>. Мы можем предложить даже базы порталов и устойчивые SMTP серверы для рассылки электронных сообщений.

      Наше ПО и базы контактов смогут вам помочь в вашем бизнесе! <a href=http://parsinfo.ru/products/smtp-servera-dlya-rassylki>купить smtp</a>. Они созданы для того, дабы систематизировать информацию для её наиболее эффективного использования. Подобный подход к делу позволяет заниматься маркетингом во много раз эффективнее и зарабатывая соответственно во много раз больше денег. А базы контактов и e-mail позволят всегда иметь актуальный список постоянных и потенциальных заказчиков, держать связь и сотрудничать, договариваться и заключать сделки.

      Для каждого пользователя мы предлагаем бесплатный парсер e-mail с сайтов, остальное ПО и базы контактов и данных мы предлагаем вам по низкой цене. <a href=http://parsinfo.ru/catalog/bazy-email-lyudej>база список жителей амурских область</a>. Вложенные подобным образом деньги помогут повысить ваши доходы на порядок!
      Ответить

    Добавить комментарий