Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.011 c
2-1210591316
Leo
2008-05-12 15:21
2008.06.01
Захват записи или распределение доступа к оной.


2-1210064880
дюха
2008-05-06 13:08
2008.06.01
Графика


2-1210155494
Первокласник Вася
2008-05-07 14:18
2008.06.01
таймер


3-1198824417
ivanovv
2007-12-28 09:46
2008.06.01
Как работать с файлом *.mdb, где названия полей в кириллице


4-1190096968
roughneck
2007-09-18 10:29
2008.06.01
Как определить букву диска флешки?




   Наверх