Вниз
Скачать: CL | DM;

можно ли преобразовать String в LPWSTR?   Найти похожие ветки 

← →
Delta   (2004-01-16 14:02) [0]

если нетрудно, то пожалуйста дайте пример


← →
_hunter_ ©   (2004-01-16 14:09) [1]

var
 l: LPWSTR;
 s: string;
begin
 s:="sss";
 l:=PWideChar(s);
end;


← →
BiN ©   (2004-01-16 14:12) [2]

_hunter_ ©   (16.01.04 14:09) [1]
и получится лабуда...

надо
 PWideChar(WideString(S));


← →
Игорь Шевченко ©   (2004-01-16 14:54) [3]

StringToWideChar


← →
Delta   (2004-01-16 16:23) [4]

извините, что не в той теме, я перепутал нечаяно
функция, к сожалению не принимает PWideChar(WideString(S));
а со StringToWideChar я не разобрался, подскажите пожалуйста


← →
BiN ©   (2004-01-16 16:38) [5]

что за функция?
если этот параметр принимает данные, то, конечно, используй StringToWideChar, в противном случае должна подойти [2]


← →
Delta   (2004-01-16 16:46) [6]

функция NetUserChangePassword,
параметры я ей передаю (4 параметра, все LPWSTR),
если передаю просто в коде
написанное "password" , к примеру - работает,
если PWideChar(WideString(pswd)) - нет...
что интересно, что имя пользователя передается...
поэтому я и хотел попросить пример StringToWideChar, т.к.
не понял что и куда там писать.


← →
BiN ©   (2004-01-16 16:59) [7]

что возвращает функция, какую ошибку.


← →
Delta   (2004-01-16 17:08) [8]

function TForm1.ChangePassword(Domain,User,Old,New:String):String;
var c:String;
    Er:Integer;
begin
c:="";
Er:=NetUserChangePassword(StrToPw(Domain),StrToPw(User),StrToPw(Old),StrToPw(New));
case Er of
  0:c:="Successfully";
  ERROR_ACCESS_DENIED:c:="Access denied";
  86:c:="Bad password";
  2221:c:="Unknown username";
  1351:c:="Domain not found";
  else c:="Error "+IntToStr(Er);
end;
Result:=c;
end;

function TForm1.StrToPw(Str:String):PWideChar;
var l,l2:LPWSTR;
begin
Result:=Pwidechar(widestring(Str));
end;

ShowMessage(ChangePassword("MAX",nusers[1],npassword[1],"2")); - Не работает

ShowMessage(IntToStr(NetUserChangePassword("Max","Administrator","1","2"))); - работает


← →
BiN ©   (2004-01-16 17:16) [9]

ShowMessage(ChangePassword("MAX",nusers[1],npassword[1],"2")); - Не работает

&*%&^$)P%$^%$^**^%!!!!!

что за nusers[1],npassword[1]
сомневаюсь, что у тебя есть юзер с именем и паролем длиной в один символ


← →
Delta   (2004-01-16 17:20) [10]

теоретически есть....
это массив
дело не в этом, если подставить значения без этих переменных,
если параметр строки - String - не работает :(


← →
BiN ©   (2004-01-16 17:27) [11]

пока ты не сказал какую выдает ошибку (в твоем случае Er), говорить о чем-то бессмысленно.


← →
Delta   (2004-01-16 17:30) [12]

Действительно, не передал,
вроде писал...
функция выдает в первом случае BadPassword, т.е.
сама функция NetUserChangePassowrd возвращает 86,
во втором случае - 0


← →
BiN ©   (2004-01-16 17:36) [13]

а попробуй напрямую написать

Er:=NetUserChangePassword(Pwidechar(widestring(Domain)),Pwidechar(widestring(User)),Pwidechar(widestring(Old)),Pwidechar (widestring(New)));

и обязательно отладчиком проверь входные значения. что-то мне не верится, что это все не работает. Пароль-то ты правильный указываешь?


← →
Delta   (2004-01-16 17:39) [14]

Да, пробовал... в том то и дело, что имя он читает "вроде" правильно, т.к. если неизвестное имя - другая ошибка,
а пароль нет... пароль и имя, правильные, заведомо, проверял...
ты знаешь как использовать StringToWideChar?
может это быдет работать?


← →
BiN ©   (2004-01-16 17:53) [15]

StringToWideChar - в данном случае идеологически неверно.


← →
MScorp   (2004-01-16 18:07) [16]

Спасибо, еще раз все проверю, наверное что-то перепутал


← →
Игорь Шевченко ©   (2004-01-16 18:07) [17]

BiN ©   (16.01.04 17:53)


> StringToWideChar - в данном случае идеологически неверно.

Можно узнать, почему ?


← →
nikkie ©   (2004-01-16 23:59) [18]

грубейшая ошибка в том, что
PWideChar(WideString(S))
вынесено в отдельную функцию.


← →
BiN ©   (2004-01-18 18:53) [19]

nikkie ©   (16.01.04 23:59) [18]
абсолютно согласен

Игорь Шевченко ©   (16.01.04 18:07) [17]

для каждого параметра нужно писать код по выделению и освобождению памяти, хотя все можно реализовать с помощью приведения типов - ведь в данную функцию предаются константы.


← →
jack128 ©   (2004-01-18 22:11) [20]

Удалено модератором
Примечание: Offtopic


← →
Игорь Шевченко ©   (2004-01-19 10:54) [21]

BiN ©   (18.01.04 18:53)


> для каждого параметра нужно писать код по выделению и освобождению
> памяти


????????? Зачем ????????


← →
BiN ©   (2004-01-19 11:35) [22]

Игорь Шевченко ©   (19.01.04 10:54) [21]
????????? Зачем ????????


... или же придется заводить массив of widechar, что по моему сугубо личному мнению все же не столь эффективно, как приведение типов - поправьте меня, если я не прав.


← →
Игорь Шевченко ©   (2004-01-19 11:44) [23]

BiN ©   (19.01.04 11:35)

я именно массив и имел в виду. Впрочем, это уже частности, разумеется, но говорить об идеологии я бы остерегся :)



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

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



Память: 0.5 MB
Время: 0.022 c
8-1069389176
Evgeniy_K
2003-11-21 07:32
2004.03.28
Оттенки


1-1077848817
Dober_m@N
2004-02-27 05:26
2004.03.28
как динамически создать форму


14-1077793338
Vik_Mix
2004-02-26 14:02
2004.03.28
Где скачать эмулятор К580


1-1078944458
TSa
2004-03-10 21:47
2004.03.28
Кнопка закрыти в MDI приложениях


14-1078228066
TALLA
2004-03-02 14:47
2004.03.28
Почему из Execute при вызове DdeClientConv1.SetLink( a , b )




   Наверх