Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

Проверка пути в DLL   Найти похожие ветки 

 
Grant   (2008-05-05 16:27) [0]

Всем привет. Есть приложение которое использует функцию из Dll.
В этой функции всего одна проверка:
 if DirectoryExists("C:\Projects\Antonф\") then
   ShowMessage("True")
Такой каталог реально существует. Но функция все равно возвращает False. Переименовываю каталог, убираю русскую букву ф - функция возвращает True. Если эту проверку делать не в Dll то и срусской буквой и без функция работает правильно. Где ошибка? Заранее спасибо.


 
Grant   (2008-05-05 16:43) [1]

Только что попробовал вместо DirectoryExists функцию CreateDir, так путь с русскими буквами создался не правильный, то есть русские буквы в пути в какой-то другой кодировке. Что делать?


 
Palladin ©   (2008-05-05 16:44) [2]

приложение консольное?


 
Grant   (2008-05-05 16:46) [3]

Нет, не консольное. Зашифрованые русские буквы в DOS кодировке.


 
Palladin ©   (2008-05-05 16:47) [4]

эээ.... что значит "Зашифрованные русские буквы в DOS кодировке" ? зачем они у тебя в "DOS кодировке" "зашифрованны"?


 
Grant   (2008-05-05 16:53) [5]

Объясняю: пишу в DLL функцию - CreateDir("C:\Projects\Antonф\");
А каталог создается - C:\Projects\AntonЇ\ То есть последняя русская буква зашифрована. Если єту функцию віполнить из exe то буква не шибруется.


 
Palladin ©   (2008-05-05 17:00) [6]

а я пишу - у меня с буквой ф создается...


 
Grant   (2008-05-05 17:02) [7]

Из DLL?


 
Palladin ©   (2008-05-05 17:03) [8]

Из DLL


 
Grant   (2008-05-05 17:05) [9]

Ок спасибо, буду разбираться.


 
Игорь Шевченко ©   (2008-05-05 17:08) [10]

у консольных приложений другая локаль.


 
Grant   (2008-05-05 17:10) [11]

Это не консольное приложение.


 
Игорь Шевченко ©   (2008-05-05 17:11) [12]


> Если эту проверку делать не в Dll то и срусской буквой и
> без функция работает правильно.


А проверка делается в каком приложении ?


 
Grant   (2008-05-05 17:13) [13]

В dll


 
Grant   (2008-05-05 17:14) [14]

Если в простом exe то нормально, если в dll то все в дос кодировке.


 
Palladin ©   (2008-05-05 17:15) [15]


> Grant   (05.05.08 17:13) [13]

работы с LCID ведутся? какая по умолчанию кодировка для не Unicode? Windows локализированная или переведенная? Что за версия?


 
Grant   (2008-05-05 17:22) [16]

1) Не ведутся
2) Русский
3) XP Proffesional Service Pack 2 Русская


 
Palladin ©   (2008-05-05 17:28) [17]

DLL

library dll001;Uses SysUtils;Procedure cdd;Begin CreateDir("c:\testф\");End;exports cdd;end.

Project

Uses Windows;var h:THandle; p:Procedure; begin h:=LoadLibrary("dll001.dll"); @p:=GetProcAddress(h,"cdd"); p; FreeLibrary(h);end.

проверь...


 
Игорь Шевченко ©   (2008-05-05 17:33) [18]

unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 end;

var
 Form1: TForm1;

function PathCheck: Boolean; external "PathCheckDll.dll" name "MyPathCheck";

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if DirectoryExists("C:\Projectsф") then
   ShowMessage("true")
 else
   ShowMessage("false");
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if PathCheck then
   ShowMessage("true")
 else
   ShowMessage("false");
end;

end.


library PathCheckDll;

uses
 SysUtils,
 Classes;

{$R *.res}

function MyPathCheck: Boolean;
begin
 Result := DirectoryExists("C:\Projectsф");
end;

exports
  MyPathCheck;

begin
end.


 
Grant   (2008-05-05 17:54) [19]

Оба примера работают правильно. Спасибо за помощь. Буду дальше разбираться.



Страницы: 1 вся ветка

Текущий архив: 2008.06.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
2-1210344790
michail
2008-05-09 18:53
2008.06.01
Сохранение изображения в двоичном файле


2-1209883222
leonidus
2008-05-04 10:40
2008.06.01
Показ и скрытие нескольких форм


15-1207899362
IGray
2008-04-11 11:36
2008.06.01
Что с TORRY.NET ?


3-1198497594
Максим
2007-12-24 14:59
2008.06.01
Многотабличные запросы (модификация данных)


4-1189857176
Nikfel
2007-09-15 15:52
2008.06.01
Вывод окна свойств для файла или папки.