Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.061 c
2-1210619333
Nemeziz
2008-05-12 23:08
2008.06.01
Как проверить изменялся ли файл


2-1210591316
Leo
2008-05-12 15:21
2008.06.01
Захват записи или распределение доступа к оной.


2-1210276036
leshyi
2008-05-08 23:47
2008.06.01
Как подставить строку в код как код?


2-1210139679
Иван
2008-05-07 09:54
2008.06.01
Как узнать имя файла?


15-1208518662
man
2008-04-18 15:37
2008.06.01
Motorola C350





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский