Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

dominiksus



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
кто знаком с регулярными выражениями?
следующ. код коверкает русский текст в html:
 

Цитата:
procedure TForm1.GotovoBtnClick(Sender: TObject);
var RegEx: TRegExpr;
begin
s2 := Web1.OleObject.Document.Body.innerHTML;
RegEx := TRegExpr.Create;
try
regex.Expression := '(<BODY>(.+?)</BODY>)';
regex.exec(s2);
showmessage(s2);
finally
regex.Free;
end;
end;

 
рисунок:
 
   
 
как сделать чтобы русский текст оставался русским?
наверно Unicode, только вот как использовать его с регулярками?
 
//Примечание.
Web1 : TwebBrowser;
s2: string;

Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 17:06 07-12-2007 | Исправлено: dominiksus, 17:23 07-12-2007
Rudia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dominiksus
В делфи нет поддержки юникода, даже в последней версии - разработчики все только обещают.

Всего записей: 324 | Зарегистр. 13-09-2006 | Отправлено: 17:37 07-12-2007
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dominiksus
Тебе надо что-то типа в этом направлении думать -

Код:
 
regex.exec(w2);  
setlength(s2,length(w2));
WideCharToMultiByte(CP_ACP, MB_PRECOMPOSED, PWideChar(w2), -1,  
     @s2[1], MAX_PATH);  
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 17:42 07-12-2007
Rudia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ну и как тебе? Что нового? Generation появились? Я думаю что подожду заявлений тех кто уже ставил. После лицензионки, я действительно почуствовал, что такое легальный инструмент. И очень не охота ломатого.

Нам надо перевести проекты ещё с 4-й делфы, стоим фактически перед выбором - использовать проверенную 7-ю либо переходить на последнюю версию. Я склоняюсь к 2007, правда я её пока ей мало пользовался - много другой работы). 2006 я не пользовался - поэтому насчет отличий этих версий ничего сказать не могу, если верить обзорам - то они не сильно отличаются. Редактор можно было сделать и получше, у меня блокнот по функциям и то покруче будет, не нравится тормознутый ms-help, понравился отладчик - очень мощная вещь, явно показывает, к каким библиотекам обращается программа, можно отладить одновременно программу и динамическую библиотеку - если имеются исходники обеих)
 
Единственного не понимаю - разве нельзя сделать автоматическое выравнивание кода, как ms visual studio - очень полезная вещь, а то в делфи как дурак с табами и пробелами мудришь - в vs: ctrl+a,ctrl+k,ctrl+f - и никаких проблем). Может есть для дельфи примочка какая? Правда в vs нету такой полезной функции, как генерация кода для методов класса.
 
Насчет лицензии согласен - лучше купить и не мучаться) а то с таким количеством апдейтов можно помереть. Разрабы выпустили update3 и сказали, что это типа последний - у меня коллега по работе в этом update3 минут через 10 пользования нашел очень неприятный баг - пришлось искать заплатку)

Всего записей: 324 | Зарегистр. 13-09-2006 | Отправлено: 18:01 07-12-2007
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rudia

Цитата:
Нам надо перевести проекты ещё с 4-й делфы, стоим фактически перед выбором  

Проекты лучше в любом случае переносить последовательно. С D4 перелазить на D7, тут даже никаких вопросов быть не может. D7 поддерживает XP стили. По этому надо пройтись по всем окнам и поправить в D7. Думаю особых проблемм с переходом быть не должно, только если в случае с FASTNET переходом на Indy. Но если этот вопрос есть, могу скинуть отличный код для перехода на Indy.
 

Цитата:
Я склоняюсь к 2007, правда я её пока ей мало пользовался  

В D2006 яки в D2007 думаю очень много сделано для дизайна и всяких Team. Но то что работает в D7 должно практически без помех работать на D2007 (опять же есть тонкости с Indy).
 

Цитата:
Единственного не понимаю - разве нельзя сделать автоматическое выравнивание кода

Видел на кодецентрал или на квелитицентрал пакеты design-time для этого. Но где - это надо искать. Мне в принципе хватает и без этого.
 

Цитата:
понравился отладчик - очень мощная вещь, явно показывает, к каким библиотекам обращается программа, можно отладить одновременно программу и динамическую библиотеку

Это появилось давно, ещё в D2005. Меня интересуют генерики. Это когда я описываю объект TList с разными элементами:
 

Код:
 
type
  TList<_t> = class
    Data: array of _t;
    procedure Add(Item: _t);
    function Extract(Item: _t): _t;
  end;
 
type
  TComponentList = TList<TComponent>;
  TIntegerList = TList<Integer>;
  ...
 
var
  x: TComponentList;
  y: TIntegerList;
begin
  x := TComponentList.Create;
  x.Add(Form1);
  ...
  y := TIntegerList.Create;
  y.Add(1234);
  ...
end.

 
Да и есть ли эти генерики для win32 или они только для .NET
generics syntax

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:24 07-12-2007
Rudia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Проекты лучше в любом случае переносить последовательно. С D4 перелазить на D7, тут даже никаких вопросов быть не может. D7 поддерживает XP стили. По этому надо пройтись по всем окнам и поправить в D7. Думаю особых проблемм с переходом быть не должно, только если в случае с FASTNET переходом на Indy. Но если этот вопрос есть, могу скинуть отличный код для перехода на Indy.

Насчет перехода:  я уже запускал и на 7 и на 2007 для перехода с 7 на 2007 ничего менять фактически не надо. В проекте массово использовался rxlib - с ними проблем не возникло, есть версии под все делфи, из сетевых использовались лишь сокеты. Проблемы возникли лишь с интерпретатором - вещь, построенная на вариантах 4-й делфи, но разработчик его перенес на 7, ну и по мелочам пару компонентов. среди которых tsyntaxmemo, правда был с исходниками и с горем пополам скомпилился, пришлось немного ручками поудалять все связанное с designintf и со. В целом системка там нехилая 50 000+ строк кода + куча ДЛЛок, которые придется тоже перекомпилить - ибо там криво сделано, к качестве параметров функциям классы передаются.
 
Насчет генериков посмотрю, сказали бы проще - шаблоны(хотя как я понял вещь немного отличается),  сразу бы понял ибо сейчас больше на С++ приходится работать)

Всего записей: 324 | Зарегистр. 13-09-2006 | Отправлено: 21:13 07-12-2007 | Исправлено: Rudia, 21:38 07-12-2007
oan42



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Общие параметризованные типы (генерики) в Delphi:
http://www.delphilab.ru/content/view/129/54/
 
Не советую бросаться на амбразуру, рановато.

Всего записей: 488 | Зарегистр. 03-08-2004 | Отправлено: 22:32 07-12-2007 | Исправлено: oan42, 22:33 07-12-2007
Arvur



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
delover

Цитата:
Меня интересуют генерики.

_http://andy.jgknet.de/dlang/
Оно?

Всего записей: 2111 | Зарегистр. 18-01-2002 | Отправлено: 13:33 08-12-2007
AntonVA1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Единственного не понимаю - разве нельзя сделать автоматическое выравнивание кода, как ms visual studio - очень полезная вещь, а то в делфи как дурак с табами и пробелами мудришь - в vs: ctrl+a,ctrl+k,ctrl+f - и никаких проблем).  

Может не правильно тебя понял, но так пробывал:
выделяешь,
ctrl+k затем i -сдвиг >
ctrl+k затем u -сдвиг <
это оно? я часто пользую
далее 2007- для мощной машины с большим озу- у меня centrino Pentium m 1,6/700mb/80gb. Результат: грузится долго>1мин, примочки в редактере кода тормозят, хелп-быстрее вспомнишь сам, чем дождешься загрузки ), машина надолго подвисает после закрытия проги, в процессе возврата в делфи (мотя м.б. проблема проги, хотел здесь спросить, да некогда).
По самим делфям: может проблемы в моей винде (не переставлял 1,5 года, работает вцелом нормально), но сразу после загрузки делфи, щелкаю на объект в редакторе форм- получаю последовательно три ошибка, уже привык, хелп весьма не полный, а апдейт только его весит 400 мегабайт!

Цитата:
Насчет лицензии согласен - лучше купить и не мучаться) а то с таким количеством апдейтов можно помереть. Разрабы выпустили update3 и сказали, что это типа последний - у меня коллега по работе в этом update3 минут через 10 пользования нашел очень неприятный баг - пришлось искать заплатку)

А чем тебе поможет в этом лицензия? Ведь ВСЕ так мучаются, я воспринимаю это как кидалово со стороны кодегира- загляни в соседнюю ветку в варезнике- народ исправлял баги ручками, в бинарных файлах, кодегир при этом спал, а доблестные пользователи ру-боарда получали патчи )  :ru-board:
 
Цитата:
Нам надо перевести проекты ещё с 4-й делфы, стоим фактически перед выбором - использовать проверенную 7-ю либо переходить на последнюю версию.  

Я перешел с 6- без проблем, правда пришлось до того переписать все отчеты фастрепорта, из 2 в 4 версию- но это уже фаст жестко кинул всех.
Не исключено, (да, скорее всего) можно без проблем перейти и обратно- пока не использывались никакие фичи 2007 (в плане кода).
о новинках 2007 часто пишут здесь: http://www.delphilab.ru переводы статей кодегира- очень полезно.

Всего записей: 474 | Зарегистр. 17-09-2003 | Отправлено: 02:13 09-12-2007 | Исправлено: AntonVA1, 02:29 09-12-2007
dominiksus



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
как вставить неформатированный текст из буфера в TWebBrowser который переведен в режим редактирования?
как заменить событие вставки Ctrl+V в этом компоненте своим событием?
след. код. вставляет форматированный текст, а мне нужен простой (без тэгов и прочего)
 

Цитата:
function GetStringFromClipboard: WideString;
var  Data: THandle;
begin
if not IsClipboardFormatAvailable(CF_UNICODETEXT) then
Result := Clipboard.AsText
else begin
Clipboard.Open;
Clipboard.SetAsHandle(CF_UNICODETEXT, Data);
try
if Data <> 0 then
Result := PWideChar(GlobalLock(Data))
else
Result := '';
finally
if Data <> 0 then
GlobalUnlock(Data);
Clipboard.Close;
end;
end;
end;

 
применение:

Цитата:
 
Range := (editor.selection.createRange as IHTMLTxtRange);
range.execCommand('Paste', false, GetStringFromClipboard);

Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 11:57 09-12-2007
anfilat

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rudia

Цитата:
В делфи нет поддержки юникода, даже в последней версии - разработчики все только обещают.

В дельфи таки есть поддержки юникода. Его нет только в интерфейсе, да и эта проблема вполне решаема с TntControls.

Всего записей: 845 | Зарегистр. 12-08-2005 | Отправлено: 10:06 10-12-2007
Rudia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Может не правильно тебя понял, но так пробывал:
выделяешь,
ctrl+k затем i -сдвиг >
ctrl+k затем u -сдвиг <
это оно? я часто пользую  

Это не оно. В студии есть выравнивание всего кода (код при этом анализируется).
Пример:
было

Код:
 
int todecimalfromHex(const char * const hexString)  {
int nums[10];
int numcnt = 0;
int num=0;
int i = 0;
for (i = 0; i<sizeof(hexString);i++) {
if ( (hexString[i]<=57 && hexString[i]>=48) || (toupper(hexString[i])<=70 && toupper(hexString[i])>=65) )
{
if (hexString[i]<=57 && hexString[i]>=48) {
nums[numcnt++] = hexString[i]-48;
}
if (toupper(hexString[i])<=70 && toupper(hexString[i])>=65) {
nums[numcnt++] = toupper(hexString[i])-55;
}
} else break;
}
int pow = 1;
for(i=numcnt-1;i>=0;i--)
{
num+=nums[i]*pow;
pow*=16;
}
return num;
}
 

нажал 2 кнопки и стало:

Код:
 
int todecimalfromHex(const char * const hexString)  {
  int nums[10];
  int numcnt = 0;
  int num=0;
  int i = 0;
  for (i = 0; i<sizeof(hexString);i++) {
    if ( (hexString[i]<=57 && hexString[i]>=48) || (toupper(hexString[i])<=70 && toupper(hexString[i])>=65) )
    {
      if (hexString[i]<=57 && hexString[i]>=48) {
        nums[numcnt++] = hexString[i]-48;
      }
      if (toupper(hexString[i])<=70 && toupper(hexString[i])>=65) {
        nums[numcnt++] = toupper(hexString[i])-55;
      }
    } else break;
  }
  int pow = 1;
  for(i=numcnt-1;i>=0;i--)
  {
    num+=nums[i]*pow;
    pow*=16;
  }
  return num;
}
 

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

Всего записей: 324 | Зарегистр. 13-09-2006 | Отправлено: 16:03 10-12-2007 | Исправлено: Rudia, 16:11 10-12-2007
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oan42
Arvur
Спасибо за сциллки - да оно. Блин, жаль, но генерики обещались появиться ещё в D2006. А по информации в D2008 будет только для дотнет, когда же доберутся до win32 - вообще непонятно. Но ждём горца.
 
oan42

Цитата:
Не советую бросаться на амбразуру, рановато.

Спасиб, только никто не бросается. Если через года три появится, то это не значит что я это начну применять через пять лет. Конечно я ориентировочно, но всё же ориентируюсь с запасом. Жаль что срок получается большим.
 
Arvur
Интересная сцилла. Порадовали очень for_in для классов-списков, я об этом думал, что можно реализовать классовыми операторами и публиковал в кодецентрале. Интересна реализация. А так же очень порадовали case_string. Это вообще давно пора сделать.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:42 10-12-2007
Widoms



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как мы знаем функция может возвращать только одно значение...
а если нужно что функция возвращала несколько значений ? Класс ?

Всего записей: 378 | Зарегистр. 09-01-2004 | Отправлено: 07:44 11-12-2007
DeadVillage



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Widoms
... массивы в вашем языке передавать можно? Вот и пожалуйста.
... функции в вашем языке могут изменять значения передаваемых параметров? Вот и опять пожалуйста.

Всего записей: 652 | Зарегистр. 05-12-2003 | Отправлено: 08:11 11-12-2007
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Widoms
delphi
function Test(var OutStr : string): boolean;

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 09:01 11-12-2007
ymg2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как мы знаем функция может возвращать только одно значение...  
а если нужно что функция возвращала несколько значений ?
 

Ну, это как раз не проблема. Всегда можешь написать тип под себя.
 
 

Всего записей: 2391 | Зарегистр. 24-08-2007 | Отправлено: 09:27 11-12-2007 | Исправлено: ymg2000, 09:27 11-12-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rudia

Цитата:
Ширина отступов регулируется в настройках. Архиполезная штука, и время экономит, а то в дельфях как дурак с табом и пробелом, и помогает читать чужой код. Особенно когда проект большой, писало несколько человек, и у каждого свой стиль в отступах, причем обычно не очень хороший.

Есть такая штука от джедаев: Jedi Code Format, но там к ней надо ещё ставить JCL и JVCL (не всю, а пару пакетов). Регулярно её пользую.

Цитата:
В дельфи таки есть поддержки юникода.

Utf8ToAnsi(), AnsiToUtf8()

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 09:28 11-12-2007
Rudia



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skinash
Спасибо, то что надо, под неё кстати в 2006 и 2007 ничего ставить не надо - в комплекте идет откомпиленный .bpl - просто ставится и работает.

Всего записей: 324 | Зарегистр. 13-09-2006 | Отправлено: 13:42 11-12-2007 | Исправлено: Rudia, 13:51 11-12-2007
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skinash

Цитата:
Есть такая штука от джедаев

Спасибо, мощная вещь. Да и вообще джадаи молодцы. Настроил в общем не плохо, но есть некоторые неприятные моменты. Почему то объявления типизированных строк (string[n]) переносятся через строку:

Код:
NameStr = string
 
    [NameSize];
TNameStr = NameStr;...

 
Ну и не получается настроить выравнивание констант после второго объявления:

Код:
const
...выровнено
 
const
...выровнено
 
const
...невыровнено
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 16:55 11-12-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru