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

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

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

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Aleksandr_N

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

Цитата:
CharInSet не предназначен для неанглийских букв.

Только вот при компиляци почему-то предлагается заменить именно на CharInSet...

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 22:01 06-04-2009
Frodo_Torbins

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

Цитата:
Только вот при компиляци почему-то предлагается заменить именно на CharInSet...

Это не ко мне, я в кодегире не работаю Но тем не менее реализация такова:

Код:
function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean;
begin
  Result := (C < #$0100) and (AnsiChar(C) in CharSet);
end;

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:29 06-04-2009 | Исправлено: Frodo_Torbins, 22:32 06-04-2009
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
А не в курсе, после 1-го апдейта (12.0.3210.17555) ничего в этом отношении не поправили? Сейчас вроде уже 12.0.3379.20359 обсуждают в соседней ветке.

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 09:09 07-04-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus
Код выше я копировал из 12.0.3370.20184. И судя по QC (и прочему) изменений не предвидится. Но зато нашел интересный пример:
Код:
case str[i] of
'а'..'я', 'А'..'Я':
Caption := Caption + str1[i];
end;

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:47 07-04-2009
whitewolfs

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как в дельфи2009 отключить юникод для одного проекта? Может директива компилятора есть? Отлаживать и переписывать заново 20 тысяч строк что то не хочется.

Всего записей: 300 | Зарегистр. 21-10-2005 | Отправлено: 02:52 10-04-2009
relictus

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

Цитата:
как в дельфи2009 отключить юникод для одного проекта?  

ИМХО, никак.

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 08:35 10-04-2009
whitewolfs

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

Цитата:
ИМХО, никак.
блин вот засада
 

Всего записей: 300 | Зарегистр. 21-10-2005 | Отправлено: 11:50 10-04-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
whitewolfs
На самом деле такой переключатель существует. Но его применение дает больше проблем, чем преимуществ.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:24 10-04-2009
ZBEP



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здрасте, вообщем такая проблемка:
У меня Unit10.pas занимает 13378 КБ (13.0 МБ)  
И при работе в коде 10 формы после 5-10 изменений делфи начинает виснуть на 5-20 сек. (приходится вырезать весь текс кроме нужной процедуры и т.д, вставлять в блокнот, писать процедуру и затем обратно вставлять в делфи вырезанный текст из блокнота).
И компелируется тож долговато.
Всего 59988 строк.  
На строчке 400-500 знаков (эт только там где условие, но часть условия(для удобства) переходит на 2 строчку (если все вместить, то будет примерно 35000 строк))
____________________________________
Постараюсь нормально сформулировать что хочу сделать.  
Есть часть условия:  
if (Edit40.Text<>t1) and (Edit38.Text<>t1) and (Edit36.Text<>t1) and (Edit34.Text<>t1) and (Edit32.Text<>t1) and (Edit30.Text<>t1) and (Edit28.Text<>t1) and (Edit26.Text<>t1) and (Edit24.Text<>t1) and (Edit22.Text<>t1) and (Edit20.Text<>t1) and (Edit18.Text<>t1) and (Edit16.Text<>t1) and (Edit14.Text<>t1) and (Edit12.Text<>t1) and (Edit10.Text<>t1) and (Edit8.Text<>t1) and (Edit6.Text<>t1) and (Edit4.Text<>t1) and (edit2.Text<>t1)  
____________________________________  
Оно повторяется если быть точным 4200 раз.  
Изменяются только "номера\имена" эдитов (только четные от 2 до 240) и "t1" (t2, t3, t4, .. ,t35).  
Хотелось бы задать переменную (Например "Z") и присвоить ей это условие, но так чтобы переменные "t1, t2, t3, .. ,t35)" и "имена\номера" эдитов задавались в каждой процедуре (всего 6 процедур), где находится оставшееся часть условия.
Можите подсказать как мне это реализовать?
Зарание спс.

Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 20:14 10-04-2009
Aleksandr_N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
А в чём проблемы? Если я правильно понял вражеский язык, то можно дописать директиву к модулю и он будет компилироваться по "старому"?

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 20:16 10-04-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZBEP
Использовать цикл с шаког 2.
В цикле TEdit(FindComponent('Edit'+IntToStr(i))).Text
 
По поводу t1...tN.
Может быть заменить на массив?

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 21:10 10-04-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleksandr_N
Проблемы в том, что перекомпилировать RTL вы не сможете, и она останется юникодной, тоже самое с VCL. Плюс с винапи можно получить кучу глюков. В общем если нужен анси, то либо оставайтесь на D2007, либо используйте специальный AnsiString.
ZBEP
Жесть конечно Почитайте еще это: Жизнь и смерть в режиме run-time.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:43 10-04-2009
Aleksandr_N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Ну... Логично...

Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 23:05 10-04-2009
ZBEP



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget, Frodo_Torbins, СПАСИБО!

Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 23:27 10-04-2009
whitewolfs

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins, спасибо за объяснения. Похоже придется всё таки переписывать прогу.

Всего записей: 300 | Зарегистр. 21-10-2005 | Отправлено: 06:41 11-04-2009 | Исправлено: whitewolfs, 06:42 11-04-2009
ZBEP



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли какая нить маленькая программка, которая сможет в тексте на 13МБ заменить это:

Код:
if (Edit40.Text<>t1) and (Edit38.Text<>t1) and (Edit36.Text<>t1) and (Edit34.Text<>t1) and (Edit32.Text<>t1) and (Edit30.Text<>t1) and (Edit28.Text<>t1) and (Edit26.Text<>t1) and (Edit24.Text<>t1) and (Edit22.Text<>t1) and (Edit20.Text<>t1) and (Edit18.Text<>t1) and (Edit16.Text<>t1) and (Edit14.Text<>t1) and (Edit12.Text<>t1) and (Edit10.Text<>t1) and (Edit8.Text<>t1) and (Edit6.Text<>t1) and (Edit4.Text<>t1) and (edit2.Text<>t1)

На это:

Код:
if CheckEdits(Form10, [40,38,36,34,32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2], t1)

??

Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 14:21 11-04-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZBEP
А IDE разве не справляется? Вообще для работы с текстом можно и ворд использовать, или вот еще есть заменитель блокнота: AkelPad.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:31 11-04-2009
ZBEP



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins, а где в нем замена?
Ctrl+h не катит.
Да и виснет он на 10 форме часто, поэтому не подойдет.
ворд, длокнот - не вмещают первое условие.
AkelPad - Идеально подошол)))
 
Добавлено:
Блин, туплю...
Как мне в отдельную функцию засунуть

Код:
var t1,t2 ... Ber1, .. , Yac6 :string;
begin
{Дальше условия ...if CheckEdits(Form10... ... then edit2.text:=t1}

Он мне эдит подчеркует...

Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 15:15 11-04-2009 | Исправлено: ZBEP, 16:22 11-04-2009
morder11

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте товарищи програмеры!
 
есть форма TForm4 = class(TForm)
 
есть  
  Form4TRADE: TForm4;
  Form4GENTRADE: TForm4;
 
вместо стандартной
Form4: TForm4;
 
далее динамически создаются
Application.CreateForm(Tform4,FormNames.SelectFormName);
 
где
FormNames.SelectFormName - переменная типа TForm4 со значением Form4TRADE и  Form4GENTRADE;
 
мне нужно при переключении форм определить какая форма активна
 
по событию TForm4.FormActivate я вызываю функцию  
GetTableRecordBySelectForm(self)
 
а в функции сравниваю
function GetTableRecordBySelectForm(MyForm:TForm4):ТутНужныйВозващаемыйТип;
begin
  if MyForm=Form4TRADE then result:= ...;
  if MyForm=Form4GENTRADE then result:= ...;
...
 
в результате  
сравнение не происходит и функция ничего не дает
 
пробовал сравнивать так
  if MyForm.Name = Form4TRADE.Name then result:= ...;
  if MyForm.Name = Form4GENTRADE.Name then result:= ...;
 
компилируется, но при вызове выдает ошибку доступа к данным из памяти
 
как сравнить? В чем моя ошибка?

Всего записей: 3 | Зарегистр. 12-04-2009 | Отправлено: 15:13 12-04-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZBEP
Цитата:
Как мне в отдельную функцию засунуть

Подробнее пожалуйста. Но скорее всего эту функцию нужно сделать методом класса, т е объявить там где у вас стоит комент "{ Public declarations }"
 
morder11
Цитата:
компилируется, но при вызове выдает ошибку доступа к данным из памяти  

Наверно на момент вызова функции формы еще не созданы, или уже уничтожены.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 15:52 12-04-2009 | Исправлено: Frodo_Torbins, 15:53 12-04-2009
   

Страницы: 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 (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru