На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

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


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> RAD Studio XE , Обсуждение Delphi XE
    ахрофигеть. я все таки этого дождался. я думаю ни раз разработчики задавали себе вопрос почему в делфи нет встроенных регулярок. и в основном юзали сторонний компонент (если нужно было)
    а вот только что нечаянно (не совсем нечаянно. просто компонент в XE отвалился и пришлось искать замену) нашел в документации к XE что они встроили в делфю регулярки.
    правда гады написали всего одну строчку про это:
    Цитата www.embarcadero.com
    Language, Compiler and Library Enhancements

    Continued improvements and enhancements to your application foundation.

    Updates to the VCL, RTL, and STL
    Regular expressions for Delphi RTL
    Enhanced TStrings and Date/Time functionality
    Enhanced RTTI support for C++, new rvalue references, move semantics for std::string, and additional C++ VCL enhancements
    Added support for the OpenTools API for internal tabs
    Improved compiler performance
    и пришлось самостоятельно выискивать по крупицам где это у нас уже регулярки есть.
    модуль: RegularExpressions
    класс: TRegEx
    стандарт: PCRE
    ExpandedWrap disabled
      uses
        RegularExpressions;
       
      procedure TForm5.Button1Click(Sender: TObject);
      var
        Reg: TRegEx;
        i:integer;
        M: TMatchCollection;
      begin
        Reg := TRegEx.Create('[а-я]*',[roIgnoreCase, roMultiLine]);
        M:=Reg.Matches('Я строка. И теперь меня можно парсить прамо в делфи без сторонних компонентов.');
        for i := 0 to M.Count-1 do
           Memo1.Lines.Add(M[i].Value)
      end;


    Эта тема была разделена из темы "Новости Embarcadero"
      Цитата ViktorXP @
      правда гады написали всего одну строчку про это

      Вообще это один из основных highlights, не знаю, как можно было пропустить :). Они своё написали или взяли TRegExpr Сорокина?
        не то и не другое.
        там TPerlRegEx. он помощьнее за TRegExpr.
          Цитата
          TPerlRegEx is a wrapper around the open source PCRE library

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

            пс. а глянуть самому я смотрю влом. :)
              Цитата ViktorXP @
              там инклудится все в файл

              А, obj-ами сделали? Это хорошо.
              Цитата ViktorXP @
              а глянуть самому я смотрю влом

              Дык нету у меня ХЕ под руками, была триальная да кончилась, а портабельная запакована, не поглядишь, как там всё устроено.
                Цитата Fr0sT @
                А, obj-ами сделали? Это хорошо.

                ага. сам люблю когда они так делают :lol:
                единственный минус что невозможно глянуть/исправить
                  Только что обнаружил странный глюк при syncedit
                  если выделить часть кода и включить syncedit (Ctrl+Shift+J или кнопкой), а потом поставить курсор перед любой строкой в блоке и нажать Ctrl+/ то будет продублирована строка. одна будет закоментирована вторая нет.
                  Это глюк или фича?

                  пс. возможно не потеме, но даже в XE эта "фича" проявляется
                    Ага, есть такое. Зачем - хз, скорее всего баг. Напиши в QC, если такой темы нету еще :)

                    Как там насчет новой версии, ни у кого вестей с фронтов нету?
                      прикольную они клиента под Quality Central сделали. Теперь багрепортом стало пользоваться удобнее :)
                      пс. ему бы еще рус. язык и ему бы цены не было.
                        Хм, а мне как-то на редкость неудобным показался. На сайте, конечно, тоже криво всё сделано, но хоть более-менее юзать можно.
                          офигеть. сегодня на работе столкнулся с трудностью
                          ExpandedWrap disabled
                            type
                              TTest<T> = class
                                procedure Test;
                              end;
                             
                            { TTest }
                             
                            procedure TTest<T>.Test;
                              procedure ProcTest; //[DCC Error] Unit5.pas(38): E2570 Local procedure in generic method or method of generic type is not supported
                              begin
                             
                              end;
                            begin
                             
                            end;
                          Неужто так трудно было организовать локально-процедурные методы в дженериках.

                          при этом пропускает банальности
                          ExpandedWrap disabled
                            type
                              {$M+}
                              TMyObj = class(TObject)
                             
                              end;
                             
                              TMyObject1 = class(TMyObj)
                             
                              end;
                             
                              TMyObject2 = class(TMyObj)
                             
                              end;
                             
                            var
                              MyObject: TMyObject1;
                             
                            type
                              TTest<T: TMyObj> = class
                                procedure Test;
                              end;
                             
                            { TTest }
                             
                            procedure TTest<T>.Test;
                            var
                              pr: TProc<T>;
                            begin
                              pr := procedure (Obj: T)
                                 begin
                             
                                 end;
                              pr(MyObject); // это не должно было пропустить.
                            end;
                             
                            var
                              Test: TTest<TMyObject2>;


                          Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                            Цитата ViktorXP @
                            pr(MyObject); // это не должно было пропустить.

                            Почему? Если я не ошибся, MyObject - потомок TMyObj.

                            Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                              Цитата Romkin @
                              Почему?

                              Потому что
                              Test: TTest<TMyObject2>;

                              это тоже самое что я буду пытатся
                              ExpandedWrap disabled
                                type
                                  TForm1 = class(TForm);
                                  TForm2 = class(TForm);
                                procedure Test(frm: TForm1);
                                begin
                                end;
                                 
                                Test(Form2); // тут ругнется ошибкой. хотя обе формы являются потомком TForm


                              Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                              Сообщение отредактировано: ViktorXP -
                                Цитата ViktorXP @
                                Потому что
                                Test: TTest<TMyObject2>;

                                это тоже самое что я буду пытатся

                                Не то же самое. Ты уже вкомпилировал вызов по соглашению. Может, следовало уже не пропустить объявление Test: TTest<TMyObject2>;? Правило то же: на основе того, что неявно подставлен TMyObject1 в Test...
                                Тут можно было говорить о том, что не должно было пропустить вызов с явным потомком, независимо от того, есть ниже реализация дженерика или нет. Но не думаю, что это правильно.

                                Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                  Цитата Romkin @
                                  Ты уже вкомпилировал вызов по соглашению.


                                  Слово то какое - "вкомпилировал"... Надо будет запомнить :D

                                  Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                    Цитата Romkin @
                                    Может, следовало уже не пропустить объявление Test: TTest<TMyObject2>;?

                                    Это было бы более правильно (в Си++ так делается). Но насколько я понял то в делфи идет по обратному
                                    из за чего нельзя написать
                                    ExpandedWrap disabled
                                      type
                                        TTest2<T> = class
                                          function Test(v1, v2: T): T;
                                        end;
                                       
                                      function TTest2<T>.Test(v1, v2: T): T;
                                      begin
                                        result := V1+v2;
                                      end;


                                    Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                    Сообщение отредактировано: ViktorXP -
                                      только что нечаянно обнаружил что есть возможность настраивать RTTI (что видеть и в каких секциях)
                                      RTTI directive
                                      это оказывается еще с 2010 версии доступно.

                                      пс. это мне не хило облегчит жизнь.

                                      Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                        ExpandedWrap disabled
                                          type
                                            IReference<T:IInterface> = interface
                                              function This:T;
                                            end;
                                           
                                          type
                                            IAction = interface(IReference<IAction>)
                                            end;

                                        Цитата
                                        [DCC Error] E2086 Type 'IAction' is not yet completely defined

                                        :(

                                        Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                          IAction = interface(IReference<IAction>)

                                          Это как?

                                          Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                            CodeMonkey а что такого??
                                            самые очевидные варианты использования (из .NET)

                                            ExpandedWrap disabled
                                              interface IClonable<T>
                                              {
                                                 T Clone();
                                              }
                                               
                                               
                                              class MyClass : IClonable<MyClass>
                                              {
                                                 public MyClass Clone() { return new MyClass(); }
                                              }


                                            Добавлено
                                            Shaggy qc ждет тебя

                                            Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                            0 пользователей:


                                            Рейтинг@Mail.ru
                                            [ Script execution time: 0.0851 ]   [ 15 queries used ]   [ Generated: 28.07.26, 13:52 GMT ]