Школоло / Говнокод #14318 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 ka3ax, (Updated )

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

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

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

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

        Тут вопрос в другом - нахрена строку разбирать на символы и собирать из нее еще одну точно такую же? 🙂 Почему бы просто не записать первую, которая st, без всех этих махинаций?
        Ответить
    • > Инкапсуляция на высоте

      То ли дело "PHP", в котором для использования глобальной переменной нужно написать "global", а для захватывания родительского контекста в замыкании нужно написать "use".
      Ответить
      • Я не использую функций в PHP потому у меня все переменные глобальны
        Ответить
  • 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 и им подобных...
                        Ответить
                        • >А для достаточно сложных грамматик (например если ты пилишь свой скриптовый язык) есть генераторы парсеров типа flex/bison, antlr и им подобных...
                          лучше ли заюзать какой-нибудь lua
                          Ответить
                          • > лучше ли заюзать какой-нибудь lua
                            Конечно лучше.

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

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

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

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

                            >Готовой нет
                            А если найду? Сходу нашел какой-то модуль, который проверяет ipv4 на валидность.
                            Ответить
                            • И что, чей-то хуемодуль тебе приятнее юзать, чем если бы я его тебе написал? Небось еще и консолечка, я ее маму, бля, топтал.
                              (
                              Ответить
                              • >чей-то хуемодуль тебе приятнее юзать, чем если бы я его тебе написал?
                                Заберите этого мудака.
                                Ответить
                                  • я таки написал ему поддержку командной строчки. за что минус, м?
                                    Ответить
                                      • 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, мне понравилось
                                                Ответить
                                            • >Кстати, писать лабы - бесполезное занятие

                                              Да и вообще код писать -бесполезное занятие. Все проги давно написаны
                                              Ответить
                                          • >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.
                          Ответить
    • Какой пиздец, прости... В делфи всегда так пишут в файл? Т.е. открытия на 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 процы у интела вечно тормозят на поколение от ширпотребного шлака, какого хуя их проц за килобакс должен сосать в чипсете
              какого хуя их хасвельные процы заставляют меня нервно теребить материал про снятие крышки проца, ведь под крышкой птичье дерьмо вместо термопасты
              Ответить
                      • Ивики не трожь, у меня ивик 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
                            Ответить
                              • > тёпленький
                                А то. Жаль, что охлаждения хватает всего на 4 треда из 12 на этой частоте. Всё-таки старый кулерок оказался слабоват.
                                Ответить
                                  • > А как считают частоту CPU?
                                    Судя по исходникам ядра - через ACPI.
                                    Ответить
                                    • И ты не прочитал еще ASL чтобы узнать КАК именно это делает APCI?!
                                      Ответить
                                      • Да делать мне больше нехуй... MSR'ы какие-нибудь скорее всего читает. Что там ещё придумаешь.
                                        Ответить
                                        • >> MSR'ы какие-нибудь скорее всего читает
                                          ну тоесть проц сам свою частоту считает?
                                          а ты уверне что не врет?
                                          Ответить
                                          • Да там скорее всего её никто и не измеряет... мне кажется, что тупо циферки из настроек PLL перемножают. А на входе у PLL'ок кварц с известной частотой.
                                            Ответить
                                            • а, ну тоесть ты через фирмварю установил частоту и он ее же и записал в MSR и оттуда ее считал ACPI?
                                              Ответить
                                              • Мне кажется да. Ну возможно не только MSR но что-то ещё специфичное для материнки.
                                                Ответить
                            • З.Ы. Надо будет завтра ваттметр добыть, померить сколько эта няшка потребляет в таком режиме.
                              Ответить
                              • Лучше уж тогда омметр - сопротивление ануса мерять. Хотя, я подозреваю, что у тебя оно будет нулевое.
                                Ответить
                                • Измерил волновое сопротивление твоего ануса на высокой частоте, проверь.
                                  Ответить
                                  • Ознакомьте нас с результатами, пожалуйста.
                                    Ответить
                              • > ваттметр добыть
                                Моники тратят 35 и 30 ватт соответственно.

                                Системник без разгона:
                                100W idle
                                180W игра в кружочки
                                280W 12x sha256
                                320W ffmpeg -preset slow
                                400W far cry primal на максималочках

                                Системник под разгоном до 5GHz:
                                300W 4x sha256
                                330W 5x sha256
                                370W 6x sha256

                                На 7x и выше охлаждения не хватает, скидывает частоту 🙁

                                З.Ы. Будет чем погреться холодными зимними вечерами...
                                Ответить
                                • ебать, какая у тебя мощность у БП? 500?

                                  И его не перекишвает?
                                  Ответить
                                    • Syoma: а дорого за электричество платишь?
                                      Ответить
                                      • > дорого за электричество платишь
                                        Да копейки, на самом деле. У нас же не европка.

                                        З.Ы. Проц в простое 700МГц всего, почти как селерон Тараса (ютубчик, редакторы и т.п. = простой).
                                        Ответить
                                      • > Syoma:

                                        Это обращение, или syoma спрашивает?
                                        Ответить
                                • Лол, померил чайник - показало 2кВт, как и написано на дне. Но теперь на компе все показания упали вдвое, что больше похоже на правду. Откалибровался что ли ебучий показометр?
                                  Ответить
                                • кофейное озеро который?? и как?
                                  Ответить
                                    • А у меня плющевой мостик 3770k (тось тоже i7 разлоченный для разгона, но 2012 года)
                                      Ответить
                                    • З.Ы. Хотя синтезатор под циклоняшку всё равно тупит - он в бесплатной версии только одно ядро юзает.
                                      Ответить
                              • Кста, что по охлаждению посоветуешь?

                                Старой доброй перформы ему только на штатные 4.4-4.7 хватает...
                                Ответить
                                • у меня ноктуа
                                  из воздуха одна из наиболее збс
                                  до водянки, даже в заводском контуре, у меня так руки и не дошли
                                  Ответить
                                  • А какая конкретно модель?

                                    З.Ы. Да можно и водянку, в принципе. Места в системнике теперь дохуя...
                                    Ответить
                                    • у меня какая-то 14я, таких уже не делают
                                      а так сейчас современная здоровенная - D15, бери, если место есть под такую ебанину (и деньги)

                                      водяные шумят сильнее, там помпа
                                      но потенциально эффективнее (для 8700k ноктуа хватит вообще без проблем)
                                      Ответить
                                      • > D15
                                        Ебать, почти 1.5кг. Мне теперь перформа кажется маленькой... Да должна войти, если за память не зацепится.
                                        Ответить
                                        • если память без высокой накладки радиатора (типа vengeance в эпоху ddr-3), то войдет, просто сверху покроет
                                          возможно, придется сначала ближнюю к сокету память ставить, а потом уже кулер (чтобы пальцы не корябать, если в нормальном порядке собирать)
                                          Ответить
                                          • и да, у меня кулер дует наверх - корпус позволяет, мне нравится
                                            твой тоже позволяет, проверь
                                            Ответить
                                            • > кулер дует наверх
                                              Не хотелось бы верхние заглушки снимать. Они неплохо шум гасят, а у меня системник на полу.
                                              Ответить
                                        • > кулер за 7300
                                          Здесь ещё стоит задуматься о том, сколько потребляет проц, которому нужен такой кулер...
                                          Ответить
                                        • Просто выкрасили его в илитные цвета (кремовый и поносный), не чета крестьянскому чёрному, сдвоили - и как бэ Арктика обеспечена.
                                          Ответить
                                    • П0мнишь я тебя про дерево девайсов на винде спрашивал?
                                      С помощью msdn, книжек Oney и Руссиновича и windbj !devobj и !devstack я разобрался (это к вопросу о пользе живого дебага кстати).

                                      В общем менеджер PnP строит дерево устройств из структур devnode. Каждая такая devnode -- значок в device manager. С ней всегда связан PDO -- инстанс объекта devobj (DEVICE_OBJECT). Это честный объект у Object Manager в неймспейсе \Device, у него даже ACL есть.

                                      Создав PDO, PnP ищет драйвер (через реестр: причем драйвер может быть как у класса, так и у устройства) и вызывает у него AddDevice передавая указатель на PDO.

                                      Драйвер создает FDO (ну или фильтр FIDO, там еще могут быть фильтры, например класс обычно фильтр создает).

                                      FDO это тоже devobj, то-есть тоже объект Object Manager'а, и драйвер цепляет этот объект к PDO через IoAttachDeviceToDeviceStack.

                                      Таким образом вокруг каждого devnode есть stack из нескольких device objects.

                                      Растет куча говна (стек) с PDO внизу.
                                      Драйвер так же регистрирует интерфейс устройства чтобы его мог найти userspace через SetupDi**

                                      Драйвер может создать ссылку в \??\Global, чтобы userspace мог потом CreateFile.

                                      И вот когда делается CreateFile то IRP идет к драйверу устройства по всему связанному с ним стеку: драйвер может сам обработать, а может передать дальше, в PDO.

                                      Так что создать ссылку может как и драйвер PDO так и драйвер FDO, и даже круче: одно устройство может быть как PDO так и FDO (например хаб usb)

                                      У devnode всгеда ессть ссылка на детей и на PDO (именно потому PDO виден у devnode в device manager)
                                      У PDO (как и у любого device) есть ссылка на стек.

                                      Так что отвечая на свой вопрос "как найти FDO по devnode" надо сделать так.

                                      1) найти PDO для devnode (!devnode в windbg)
                                      2) найти его стек (!devstack [адрес PDO])
                                      И там будут все йстройства, включая FDO.

                                      Есть еще !drvobj (объект драйвер который можбыть связян с 1 или более devobj) и можно по драйверу тоже найти.

                                      Если просто ланчануть winobj то ты можешь увидеть все devobj в \Devices, но чтобы узнать какие они образуют стеки и к каким devnodes относятся (devnode не виден в winobj ибо не объект object manager'а) нужна или утилита DEVVIEW зазавтроством Oney или windbg.

                                      Ебануться ваш WDM сложный, как только люди его понимают
                                      Ответить
                            • Теперь проект на крестах собирается всего лишь за час?
                              Ответить
                                • >>Теперь можно генту ставить, наверное.
                                  и ядро еще свое собрать не забудь, каждую опцию осмысленно выбирав
                                  Ответить
                                  • Ну про шедулеры и т.п. Дрова то проще тупо все включить и не париться.
                                    Ответить
                                    • Дрова мудомлями собируются и udev их грузит по pnpid
                                      depmod.alias или как там оно

                                      полный PnP же, как в винде.

                                      когда-то было нельзя: надо было осмысленно или вкопаливать дрова в ядро или modprobe их
                                      Ответить
                                  • > и ядро еще свое собрать не забудь, каждую опцию осмысленно выбирав

                                    Я так делал пару раз (тогда ещё 2.6 ядро было), но возня при обновлении ядра утомляет.
                                    Ответить
                                    • > возня при обновлении ядра
                                      Ты про ревью новых опций ядра прямо в соснольке во время апгрейда со старого конфига? Да, не особо приятная вещь.
                                      Ответить
                                          • "kernel32.dll" —— это не ядро. Это один из интерфейсов к ядру.

                                            Ядро —— это "ntoskrnl.exe" ("ntkrnlpa.exe", "ntkrnlmp.exe", "ntkrpamp.exe") в "Windows NT", "vmm32.vxd" в "Windows 95/98/Me", "win386.exe" в расширенном режиме "Windows 3.x" и "dosx.exe" в стандартном режиме "Windows 3.x".
                                            Ответить
                              • Позволю себе заметить, что проекты на "PHP" вообще не надо собирать.
                                Ответить
                      • Коэффициент теплопроводности дерьма упоминается в ГОСТ Р 53042-2008, однако, таблиц с примерами значений для разных сортов мне найти не удалось. Ссылочками не поделитесь?
                        Ответить
                        • Боюсь, моя любимая "Таблицы значений теплопроводности сортов дерьма" ещё не оцифрована и может быть утеряна 🙁
                          Ответить
                          • Как, на главном специализированном сайте по говну никто не знает, где скачать таблицы теплопроводности дерьма? Безобразие!

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

                            Но пока более точных данных нет, имею подозрение, что низкая теплопроводность обусловлена соломой. Где бы найти данные по чистому дерьму?
                            Ответить
                            • В ней описана только форма. Вероятно, форма непосредственно связана с количеством воды в дерьме (насколько помню, последние номера бывают при поносе, а первые при состоянии, близком к запору). Можно предположить, что у разных форм разная теплопроводность из-за разного содержания воды, но в таблице значения теплопроводности нет. Придётся измерять самостоятельно.
                              Ответить
              • Юзать панели Пельтье религия не позволяет? Я чуть не обосцался, когда прочел, как они работают. Полупроводники подчинили себе мир.
                Ответить
                • > Юзать панели Пельтье религия не позволяет?
                  Там на хасвеллах между кристаллом проца и его крышкой теплопередача плохая. Народу приходится разбирать проц и менять теплопроводящую херню 🙂 Элементы пельте тут не особо помогут. Разве что если их засунуть между кристаллом и крышкой.
                  Ответить
    • Эта процедура НЕ нужна. Либо создавай стрим внутри ее, либо обходись без процедуры. Ты пристраиваешь лифт снаружи дома, ты понимаешь?
      Ответить
  • Вот вам проекты моего препода на растерзание:
    Этот на делфи. Вроде требует SQL Server. Но я думаю знающие люди оценят квалификацию моего уважаемого преподавателя.
    http://yadi.sk/d/AcndhxgNFbP7N

    А эти два помоему на бейсике, препод со слюнями у рта кричит что это его 3Д и 2Д движки собственной разработки. Я делаю вид, что ему не верю что это возможно, а он бедный аж на говно исходит. Компилятор мне неизвестен, но не беда - экзэшники препод оставил
    http://yadi.sk/d/Q2IORhp3FbP96
    http://yadi.sk/d/iEq_cCjLFbP9n
    Ответить
    • неясно только, ты хвалишься или жалуешься?
      все остальное в вузе устраивает?

      ты ведь не надеялся, что каждый первый встреченный в жизни препод будет светилой передовой науки, пренебрегающий гуглами, микрософтами, айбиемами и ораклами, выстроившимися в очередь с офферами к нему, и желающим передать всю глубину своего блестящего жизненного опыта за 40 тыщ рублей?
      Ответить
      • остальное устраевает, но информатика... диплом то программиста у меня будет
        Ответить
          • основы схемотехники, теория автоматов, архитектура вычислительных машин, языки Паскаль, Пролог и Q-Basic, Фортран, Оберон.
            Ответить
              • Так не он пишет, а преподы его учили те, что закончили в 80х. Така балалайка есть в некоторых институтах. Там устар. знания дают.
                Ответить
                • Жестко. нам например препод по АВС про ivy bridge рассказывал
                  Ответить
                  • Такие дела. Мы однажды открыли для препода по БД NoSQL и иже с ними.
                    Ответить
                    • все рассказывали. и интеловскию линейку с архитектурами, и амдешную. и хитрый 2на2 ядерник интеловский. даже ниагару и ультраспарк
                      Ответить
                      • И как оно у тебя в гоголове уляляглось?
                        Помнишь в какой момент появилась SSE? Помнишь, когда intel стал RISC?
                        Помнишь кто такой Томасуло? Помнишь зачем нужен регистр C3?
                        Ответить
            • >>Q-Basic, Фортран, Оберон.
              ничетак, актуальненько
              Ответить
        • какой курс? дельфи и (о ужас) бейсик - скорее всего первый
          сомневаюсь, что один и тот же препод тащит все курсы один - скоро сменится на другого, значит
          тем более, если ты назвал его курс информатикой
          Ответить
    • Ничего не найдено
      Ничего не найдено


      ты соврал
      Ответить
  • Вам необходимы парсеры или база электронных ящиков с вебсайтов? <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>. Вложенные подобным образом деньги помогут повысить ваши доходы на порядок!
    Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8