Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.05.18;
Скачать: [xml.tar.bz2];

Вниз

Delphi XE4 функция StrPCopy не рекомендована   Найти похожие ветки 

 
SkAndriy   (2013-07-28 17:22) [0]

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

[dcc32 Warning] myunit.pas(88): W1000 Symbol "StrPCopy" is deprecated: "Moved to the AnsiStrings unit"

использую Delphi XE4 - в ней нужно функцию StrPCopy заменить на какую-то иную?

спасибо за любую помощь


 
MBo ©   (2013-07-28 17:28) [1]

А какая задача стоит?


 
SkAndriy   (2013-07-28 17:39) [2]

вот такая:

var FileName: string;
    lpstrFile : PAnsiChar;

StrPCopy(lpstrFile, AnsiString(FileName));

и на  это такие сообщения:

[dcc32 Warning] myunit.pas(88): W1000 Symbol "StrPCopy" is deprecated: "Moved to the AnsiStrings unit"

и еще попутно далее на строку:

var szFile: array[0..MAX_PATH] of AnsiChar;
    FileName: string;

FileName := StrPas(szFile);

выдает следующее сообщение:

[dcc32 Warning] myunit.pas(98): W1000 Symbol "StrPas" is deprecated: "Moved to the AnsiStrings unit"

как решить проблему?

спасибо


 
Inovet ©   (2013-07-28 17:41) [3]

> [2] SkAndriy   (28.07.13 17:39)
> вот такая:

Это не задача, а решение.


 
SkAndriy   (2013-07-28 17:42) [4]

та что здесь неверного?


 
Inovet ©   (2013-07-28 17:44) [5]

> [4] SkAndriy   (28.07.13 17:42)
> та что здесь неверного?

Зависит от задачи.


 
megavoid ©   (2013-07-28 17:45) [6]

> та что здесь неверного?
Deprecated - то, что в XE5, 7, ...10 можно при переносе проекта столкнуться с некомпилируемым кодом - то есть пока живёт в VCL.AnsiStrings, а дальше - не факт, что будет жить


 
SkAndriy   (2013-07-28 17:48) [7]

хорошо я понимаю, тогда какие альтернативы StrPCopy и StrPas в таком случае? чем их можно заменить, типы переменных я описал выше.

спасибо


 
Германн ©   (2013-07-28 17:49) [8]


> та что здесь неверного?

То что эту функцию следовало бы забыть уже очень давно. В Д2 она уже стала не нужна.


 
RWolf ©   (2013-07-28 18:02) [9]


> какие альтернативы StrPCopy и StrPas в таком случае?

FileName := szFile;
lpstrFile := PChar(filename);


 
SkAndriy   (2013-07-28 18:16) [10]

var FileName: string;
    szFile: array[0..MAX_PATH] of AnsiChar;
    lpstrFile : PAnsiChar;

FileName := szFile; - Implicit string cast from "AnsiChar" to "string"
lpstrFile := PChar(filename); - Incompatible types: "PAnsiChar" and "PWideChar"

есть решения решения?

спасибо


 
Германн ©   (2013-07-28 18:22) [11]

var FileName: Ansistring;
   szFile: array[0..MAX_PATH] of AnsiChar;
   lpstrFile : PAnsiChar;

FileName := szFile;
lpstrFile := PAnsiChar(filename);


 
SkAndriy   (2013-07-28 18:23) [12]

к сожалению условия менять нельзя var FileName: string; только String!

спасибо


 
SkAndriy   (2013-07-28 18:25) [13]

новое предупреждение от компилятора:

lpstrFile := PAnsiChar(filename); - Suspicious typecast of string to PAnsiChar

спасибо за помощь


 
Германн ©   (2013-07-28 18:29) [14]


> SkAndriy   (28.07.13 18:23) [12]
>
> к сожалению условия менять нельзя var FileName: string;
> только String!
>

Почему нельзя? Чем string в твоей версии Дельфи отличается от Ansistring знаешь?


 
SkAndriy   (2013-07-28 18:31) [15]

а решить эту проблему с имеющимися параметрами нельзя?

спасибо


 
SkAndriy   (2013-07-28 18:35) [16]

вот так почему-то работает: FileName := String(szFile);

это верно? и как второе исправить выражение :

lpstrFile := PAnsiChar(filename); - Suspicious typecast of string to PAnsiChar

спасибо


 
Германн ©   (2013-07-28 18:36) [17]


> SkAndriy   (28.07.13 18:31) [15]
>
> а решить эту проблему с имеющимися параметрами нельзя?
>

А проблему ты до сих пор не озвучил хотя уже в первом ответе про это спросили.

Приведи код, который ты откуда-то скопипастил и пытаешься применить для своих целей. Тогда можно будет помочь.


 
SkAndriy   (2013-07-28 18:40) [18]

пожалуйста:

function OpenSaveFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string; IsOpenDialog: Boolean): Boolean;
var
 ofn: TOpenFileName;
 szFile: array[0..MAX_PATH] of AnsiChar;
begin
 Result := False;
 FillChar(ofn, SizeOf(TOpenFileName), 0);
 with ofn do
 begin
   lStructSize := SizeOf(TOpenFileName);
   hwndOwner := ParentHandle;
   lpstrFile := szFile;
   nMaxFile := SizeOf(szFile);
   if (Title <> "") then
     lpstrTitle := PAnsiChar(AnsiString(Title));
   if (InitialDir <> "") then
     lpstrInitialDir := PAnsiChar(AnsiString(InitialDir));
   StrPCopy(lpstrFile, AnsiString(FileName));
   lpstrFilter := PAnsiChar(AnsiString(CharReplace(Filter, "|", #0)+#0#0));
   if DefExt <> "" then
     lpstrDefExt := PAnsiChar(AnsiString(DefExt));
 end;
 if IsOpenDialog then
 begin
   if GetOpenFileName(ofn) then
   begin
     Result := True;
     FileName := StrPas(szFile);
   end;
 end
 else
 begin
   if GetSaveFileName(ofn) then
   begin
     Result := True;
     FileName := StrPas(szFile);
   end;
 end
end;

здесь ругается на StrPCopy и все StrPas.

теперь понятнее?

спасибо


 
Германн ©   (2013-07-28 19:12) [19]

Самое логичное это убрать из этого кода все Ansi а StrPCopy и StrPas заменить на то что предложил RWolf ©   (28.07.13 18:02) [9]


 
SkAndriy   (2013-07-28 20:03) [20]

пробовал - эффект тот же.

есть еще идеи?

спасибо


 
Inovet ©   (2013-07-28 20:23) [21]

> [20] SkAndriy   (28.07.13 20:03)
> есть еще идеи?

Пользоваться юникод версией.


 
Германн ©   (2013-07-28 20:31) [22]


>  SkAndriy   (28.07.13 20:03) [20]
>
> пробовал - эффект тот же.
>

Значит неправильно пробовал. Не все буквы "ANSI" убрал.


 
MBo ©   (2013-07-29 09:33) [23]

Если начали использовать юникодную версию - не надо дёргаться с заплатками - стоит внимательно почитать статьи о переходе на юникод.
Например, отсюда и по ссылкам:
http://www.transl-gunsmoker.ru/2009/09/pchars.html



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

Форум: "Начинающим";
Текущий архив: 2014.05.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.002 c
6-1272272116
Дмитрий Белькевич
2010-04-26 12:55
2014.05.18
Indy 10 обновляется?


15-1384174248
Joker87
2013-11-11 16:50
2014.05.18
Распределенная разработка проекта


2-1375298545
Novice
2013-07-31 23:22
2014.05.18
Изменить цвет выделения строки ListView


2-1375356989
14
2013-08-01 15:36
2014.05.18
Событие OnChange у DateTimePicker


15-1384259097
L8
2013-11-12 16:24
2014.05.18
Как определить что в TImage?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский