Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2014, 13:19   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Билдер для юникода

Сообственно код:
Код:
oldstring := '????????????????????????????????????????????????'; 
newstring := Edit1.Text;
s := oldstring; AssignFile(f, FileName);
Reset(f, 1); 
l:=0;
 go:=true; 
while (l<=(FileSize(f) - Length(oldstring) - 1)) and go do   begin   
 Seek(f, l);    
BlockRead(f, oldstring[1], Length(oldstring));   
 if oldstring = s then     begin     
 seek(f, l);     
 BlockWrite(f, newstring[1], Length(newstring));    
  go:=false;     
end;    
inc(l);
end;
На delphi 7 работает нормально, на xe5 юникод уже не пашет, точнее пашет, после двух билдов, как перевести этот код под юникод?
Winexcel вне форума Ответить с цитированием
Старый 22.07.2014, 13:34   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Почитайте о том, чем отличается однобойтовая ANSI-строка(Delphi 7) от ддвухбайтовой UNICODE-строки(Delphi 2009+) .
Человек_Борща вне форума Ответить с цитированием
Старый 22.07.2014, 13:40   #3
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Почитайте о том, чем отличается однобойтовая ANSI-строка(Delphi 7) от ддвухбайтовой UNICODE-строки(Delphi 2009+) .
Я знаю чем отличается, символ занимает 2 байта вместо одного, я пробовал строки объявлять типа UnicodeString, нечего не вышло
Winexcel вне форума Ответить с цитированием
Старый 22.07.2014, 13:43   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Если бы знали различие, то не создавали бы темы
байт на диске он байт. А символ юникода это 2 байта. А вы всеравно пишите 1 байт.
Человек_Борща вне форума Ответить с цитированием
Старый 22.07.2014, 13:58   #5
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Если бы знали различие, то не создавали бы темы
байт на диске он байт. А символ юникода это 2 байта. А вы всеравно пишите 1 байт.
Код:
NewString, OldString:UnicodeString;
Объявил как юникод, хотя и string является по умолчанию юникодом, не пойму почему не пишет
Winexcel вне форума Ответить с цитированием
Старый 22.07.2014, 15:09   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Потому что 2 байта а не 1.
Строку в 5 юникодных знаков, надо записывать в 10 байт файла.
Человек_Борща вне форума Ответить с цитированием
Старый 25.07.2014, 19:33   #7
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Специально для тех у кого такая же проблема:
Открывать файл нужно с определением записи в 2а байта а не один.
Winexcel вне форума Ответить с цитированием
Старый 26.07.2014, 02:37   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Winexcel Посмотреть сообщение
Специально для тех у кого такая же проблема:
Открывать файл нужно с определением записи в 2а байта а не один.
Да. Наверно для других таких же неучей ака чукчей-извращенцев этот совет пригодится.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
символы юникода в макросе caute Microsoft Office Word 3 16.04.2012 17:59
[Си++ Билдер]Преобразовать математическую формулу в нормальный для компилятора вид mrG0bliN Помощь студентам 7 24.01.2012 19:28
FPC. Есть ли аналог функции CHR для Юникода? Lex_Liven Lazarus, Free Pascal, CodeTyphon 3 27.05.2011 13:30
билдер для C# MyXa Общие вопросы .NET 3 14.02.2011 14:15
Что-то на счёт типов и юникода Smusmumriken Общие вопросы C/C++ 7 10.06.2010 10:47