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

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

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

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

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы http://forum.ru-board.com/topic.cgi?forum=33&topic=3647&start=2020#lt
Внимание, все большие куски кода (более 5 строк) оформляем в тег [more] дабы уменьшить размер поста.

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:52 20-04-2006 | Исправлено: ShIvADeSt, 02:02 30-06-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andead
а ты уверен, что на входе не "вопросики"?
Вобще лучше приведи код и укажи что сохраняешь и под какой локалью работает приложение.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 13:52 23-02-2007
SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andead
ну, вообще-то, когдая я говорил, что пост - супер, я имел в виду, как отвечая по делу можно одновременно всех с праздником поздравить... ;-))
 
теперь про UTF8...  
попробовал у себя. Delphi5. функции AnsiToUtf8 — не нашёл... ;-((
зато в JclUnicode нашел WideStringToUTF8
попробуйте  
    _StrList.Text := WideStringToUTF8(_StrList.Text);
 
все отработало (был создан файл congratulations_utf8.txt  153 байта длиной)
 
И, кстати, согласен с vshersh -  

Цитата:
Вобще лучше приведи код и укажи что сохраняешь и под какой локалью работает приложение.
...
 
Удачи.  

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 17:08 23-02-2007 | Исправлено: SERGE_BLIZNUK, 17:10 23-02-2007
andead



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

Цитата:
Вобще лучше приведи код и укажи что сохраняешь

код:

Код:
...
var
  WorkFile: TStringList;
begin
  WorkFile := TStringList.Create;
  WorkFile.Add('صرسثضرطثخىرط');
  WorkFile.Text := AnsiToUTF8(WorkFile.Text);
  WorkFile.SaveToFile('D:\1.txt');
  WorkFile.Free;
end;

 

Цитата:
 и под какой локалью работает приложение.

windows-1251 наверное, если это имелось ввиду
 
завтра попробую через Jedi
 
Добавлено:
форум съел (поменял) фразу на арабском, но смысл думаю понятен

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 22:44 23-02-2007 | Исправлено: andead, 22:48 23-02-2007
SERGE_BLIZNUK

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

Цитата:
форум съел (поменял) фразу на арабском, но смысл думаю понятен
Подробнее...
у.... как всё запущено... Так вроде бы TStringList не поддерживает unicode...  
function Add(const S: string): Integer; override;  
- а разве в обычной строке можно записывать двухбайтные символы?  
имхо, Вам нужен класс, построенный на основе WideString !!!!

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 10:17 24-02-2007
andead



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

Цитата:
Так вроде бы TStringList не поддерживает unicode..

точно
 
попробовал с Jedi:
 

Код:
uses ..., JclWideStrings, JclUnicode;
...
var
  WorkFile: TWideStringList;
begin
  WorkFile := TWideStringList.Create;
  WorkFile.Add('Hello World');
  WorkFile.Text := WideStringToUTF8(WorkFile.Text);
  WorkFile.SaveToFile('D:\1.txt');
  WorkFile.Free;
end;

 
BRED3 говорит что файл в UTF-16, Notepad++ говорит что в UCS-2 little Endian, TextPad пишет просто Unicode
вобшем пока результата в виде UTF-8 не добился (

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 12:18 24-02-2007
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в DRKB нашел такое:
Загрузка в мемо уникодового файла:
Подробнее...
 
Добавлено:
еще:
StringToWideChar    Преобразовывает строку формата ANSI в Unicode-строку.  
 
WideCharLenToString Преобразовывает указанное количество символов Unicode-строки в ANSI строку.  
 
WideCharLenToStrVar Преобразовывает заданное количество символов Unicode-строки в ANSI формат и копирует результат в указанную переменную.  
 
WideCharToString Преобразовывает длинную строку Unicode в ANSI строку.  
 
WideCharLenToStrVar Преобразовывает строку формата Unicode в ANSI-формат и копирует результирующую строку в указанную переменную.  
 
 
Добавлено:
и т.д... Скачай себе chm-ку с www.drkb.ru и возьми поиск по слову unicode

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 17:37 24-02-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
andead
WideStringList сохраняет все свое содержимое в юникоде, а как оно туда попадает - не существенно, все равно приводится к двухбайтному представлению.
Для исходной ANSI-текста работает код vshersh.  
Функция AnsiToUTF8 описана в System в D10 так: Result := Utf8Encode(S). Utf8Encode на вход принимает WideString - то есть происходит неявное перекодирование из ANSI в юникод по текущей локали.
Соответственно для исходного юникод-текста можно вызывать сразу ее, но результат помещать в обычный TStringList и его уже сохранять на диск

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 17:43 24-02-2007
svs123456789

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
при использовании TFrame очень не хватает событий создания и разрушения
чтобы инициализировать настройки во фрейме
(по аналогии с методами FormCreate и особенно FormDestroy )
использую  
type
  TFrame1 = class(TFrame)
  public
    procedure Init(DataSet: TDataSet);
  end;
и вызываю в методе FormCreate у формы-владелбца фрейма метод Init  
 
а как порекомендаете например сохранять настройки-состояние фрейма?

Всего записей: 2941 | Зарегистр. 10-04-2003 | Отправлено: 23:01 24-02-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
svs123456789
Перекрой деструктор:
Код:
 
  TFrame1 = class(TFrame)
  public
    procedure Init(DataSet: TDataSet);
    destructor Destroy; override;
  end;
...
destructor TFrame1.Destroy;
begin
  // твой код
  inherited;
end;
 

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 10:13 25-02-2007 | Исправлено: RomanTim, 10:13 25-02-2007
svs123456789

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim
спасибо!
а как перекрыть конструктор - ведь мне надо передавать параметры, а создание вызывает ошибку
constructor TFrameDEdit.Create(DataSet: TDataSet);
begin
  // TODO : мой код
  inherited;
end;
 
т.к. отличаются параметры от constructor TCustomFrame.Create(AOwner: TComponent);

Всего записей: 2941 | Зарегистр. 10-04-2003 | Отправлено: 13:47 25-02-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
svs123456789
Конструктор по-моему перекрыть не удастся - свой то написать можно, но это не поможет, так как VCL вызывает создание компонентов формы через Create(AOwner: TComponent).
Придется использовать вариант с Init

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 23:46 25-02-2007
Arvur



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

Цитата:
а как перекрыть конструктор - ведь мне надо передавать параметры, а создание вызывает ошибку

Посмотри на директиву reintroduce - для форм в таком случае помогает.
А насчет создания RomanTim прав - создавать придется ручками, благо ничего сложного.

Всего записей: 2111 | Зарегистр. 18-01-2002 | Отправлено: 01:14 26-02-2007
xitsmex



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

Цитата:
при использовании TFrame очень не хватает событий создания и разрушения  
чтобы инициализировать настройки во фрейме  
(по аналогии с методами FormCreate и особенно FormDestroy )  
использую  
type  
  TFrame1 = class(TFrame)  
  public  
    procedure Init(DataSet: TDataSet);  
  end;  
и вызываю в методе FormCreate у формы-владелбца фрейма метод Init  

По аналогии с FormCreate и FormDestroy (а точнее, они отсюда и вызываются):
 procedure AfterConstruction; override;
 procedure BeforeDestruction; override;
Обе процедуры определены для любого TObject, значит, и для TFrame.

Цитата:
 
а как порекомендаете например сохранять настройки-состояние фрейма?

Настройки состояния лучше всего, имхо, хранить именно там, где предполагали борландовцы - в свойствах. А вот DataSet в конструкторе, имхо, не очень хорошо. Лучше сделать свойством, а все хорошее делать на SetDataSet.

Всего записей: 58 | Зарегистр. 31-08-2005 | Отправлено: 00:24 27-02-2007
SergSt88

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, кому не трудно, пожалуйста, помогите написать игру в Delphi Тетрис с использованием ООП. У меня есть кое-какие наброски

Всего записей: 1 | Зарегистр. 27-02-2007 | Отправлено: 00:43 27-02-2007
RomanTim

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

Цитата:
Настройки состояния лучше всего, имхо, хранить именно там, где предполагали борландовцы - в свойствах. А вот DataSet в конструкторе, имхо, не очень хорошо. Лучше сделать свойством, а все хорошее делать на SetDataSet.

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

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 08:02 27-02-2007
SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ребята вопрос про Delphi - но на грани оффтопика...
Если что - прошу отвечать в ПМ!
 
Увидел случайной в каталоге  
периодическое издание "ПРОГРАММИРОВАНИЕ DELPHI ДЛЯ ПРОФЕССИОНАЛОВ".
Ежемесячный журнал.
 
вопрос - кто-нибудь сталкивался с таким изданием? Если да - то кто издаёт журнал(выходные данные) и какие впечатления от него?

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 11:03 27-02-2007
Tartrout



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги,
 
Просветите, есть ли в дельфях overloaded assignment operator (скажем, для структур. Или хотя бы для классов). То что его нет в списке операторов, разрешенных к перегрузу, я уже увидел. Но, может быть, есть какой-нибудь обходной путь? Типа через copy constructor какой-нибудь? Что-то у меня ничего не получилось.
 
Как все чудесно на C++... Увы, не всегда можно писать на том языке, на котором хочешь...
 
Заранее благодарен.

Всего записей: 316 | Зарегистр. 24-07-2002 | Отправлено: 19:20 27-02-2007
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую Tartrout!
Прочитал - и прослезился Как мне  самому этого не хватает...
В Делфи операторы не перегружаются... Конструктора копий тоже не бывает, т.к. все объекты в делфи создаются в куче, а не в стеке...

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 21:22 27-02-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Tartrout
Для своих классов можно сделать методы Assign и Clone
 

Цитата:
Как все чудесно на C++

Ну с этим - на вкус и цвет...

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 00:10 28-02-2007
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Tartrout
vshersh
Ну почему это нет? начиная с 2005 для структур можно перегружать операторы. даже примерчик есть в демкам для работы с комплексными числами.
Для классов такая возможность есть долько в Delphi.NET

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 02:05 28-02-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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2
ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru