Войти

Показать полную графическую версию : string и pansichar


LilLoco
19-05-2010, 14:35
Столкнулся с такой проблемой!Раньше все сидел на делфи7 сейчас решил перейти на Embarcadero delphi 2010! При работе на делфи7 с временными таблицами:


path : string; //путь к ехе
.....
query := tquery.create(nil);
query.Active := false;
query.SQL.Add('......');
query.SQL.Open;
DBiMakePermanent(query.handle,path+'temp.db',true);
query.SQL.Close;

код прекрасно работал. а на 2010 ругается на приведение типов :(
работает если просто


.....
DbiMakePermanent(query.handle,'temp.db',true);
.....


но такой вариант не подходи, так как все поддиректории создаются программно!

как это осуществить?помогите пожалуйста

LilLoco
19-05-2010, 15:03
Все с той проблемой я кажется разобрался!нужно вроде бы так:


dir : string;
......
dir := path+'...';
.....
DbiMakePermanent(query.Handle,pansichar(ansistring(dir)),true);
......


но тут же появился новый вопрос :( Не Работает с русским языком :( Как сделать чтобы создавалась папка на русском языке, и туда закидывался файлик ?(

opel431
19-05-2010, 22:57
Пока лучшее, что я нашел по "борьбе" с Юникодом:
http://www.delphi2009.ru/Unicode_Delphi-RUS.pdf

http://edn.embarcadero.com/article/38446
http://edn.embarcadero.com/article/38582
http://edn.embarcadero.com/article/38703

Я не пробовал перевод проектов с 7 на 2010, но про проблемы читал.
Можно попробовать явно указать тип AnsiString.

AnsiString в 2010 включают в себя Encoding, по умолчанию текущий, системы.
Т.е можно так: AnsIString(1251) := AnsIString(866); или так AnsIString := AnsIString(866); или так AnsIString := AnsIString(utf8);

LilLoco
19-05-2010, 23:04
opel431, да спасибо, читал эти ссылки, завтра буду пробывать :)




© OSzone.net 2001-2012