Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
ВнизПроверка пути в 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.
ProjectUses 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.031 c