Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 913
#1

Небезопасное использование PChar - Delphi

25.02.2016, 22:46. Просмотров 220. Ответов 6
Метки нет (Все метки)

В программе использую функцию CreateFile. Первый параметр - имя устройства. Его тип PAnsiChar. Если его передать как строку в кавычках, то все нормально. Но мне надо передать в виде переменной (я перебираю имена COM1, COM2 итд, но суть не в этом). Если я передаю имя как переменную типа PAnsiChar или PChar, то компилятор выдает предупреждение что небезопасное использование PChar. Если как адрес строки, то тоже самое. Вообще программа работает правильно, на выдаваемый warning смущает что я что то не так делаю. Может подскажите как положено?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2016, 22:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Небезопасное использование PChar (Delphi):

Pchar из dll
в общем, требуется написать UDF под интербазу, катаем dll library...

Pchar и освобождение памяти
Здравствуйте. Написал парсинг страницы сайта. Запрос страницы идёт из...

работа с указателями Pchar
имеется код type pstr = ^UnicodeString; var Form1: TForm1; ...

Вывод текста PChar
подскажите почему выводит лишние символы var f: File; Size, i: Integer;...

Delphi String i PChar
Вобщем суть в том что нужно из одно приложения в другое передать строку с...

[Warning] Unsafe type 'PChar'
program Launcher; {$APPTYPE CONSOLE} {$R *.RES} uses SysUtils, ...

6
cotseec
Пишу на Delphi...иногда
1406 / 1266 / 284
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
25.02.2016, 22:56 #2
Цитата Сообщение от paskal Посмотреть сообщение
что небезопасное использование PChar
если память возвращается обратно, то ничего небезопасного нет
Цитата Сообщение от paskal Посмотреть сообщение
Если его передать как строку в кавычках, то все нормально. Но мне надо передать в виде переменной (я перебираю имена COM1, COM2 итд, но суть не в этом).
а что мешает также передавать строку (тип string), а в функции приводить к PChar?
0
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 913
25.02.2016, 23:56  [ТС] #3
Цитата Сообщение от cotseec Посмотреть сообщение
а что мешает также передавать строку (тип string), а в функции приводить к PChar?
А как string перевести в PChar?
0
northener
пофигист широкого профиля
3252 / 2304 / 628
Регистрация: 15.07.2013
Сообщений: 13,597
26.02.2016, 00:51 #4
Цитата Сообщение от paskal Посмотреть сообщение
компилятор выдает предупреждение что небезопасное использование PChar
Плюнь и разотри. Твоя версия Дельфи относится к временам несбывшихся надежд на абсолютную кроссплатформенность.
Цитата Сообщение от paskal Посмотреть сообщение
А как string перевести в PChar?
Имхо, ты уже это знаешь. Иначе не получил бы такое предостережение.
0
cotseec
Пишу на Delphi...иногда
1406 / 1266 / 284
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
26.02.2016, 00:54 #5
приведением типов
Delphi
1
2
3
4
var
   SomeVar: string;
...
   if CreateFile(PChar(SomeVar)...) =...
0
northener
пофигист широкого профиля
3252 / 2304 / 628
Регистрация: 15.07.2013
Сообщений: 13,597
26.02.2016, 01:00 #6
Цитата Сообщение от cotseec Посмотреть сообщение
приведением типов
Именно в этом случае ТС и получает сей Warning в своей версии Дельфи
1
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 913
27.02.2016, 12:47  [ТС] #7
Цитата Сообщение от cotseec Посмотреть сообщение
приведением типов
На это Делфи и ругается. Версия у меня Delphi7 если что.
0
27.02.2016, 12:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2016, 12:47
Привет! Вот еще темы с решениями:

Конвертация String (PChar) в Array of char
Привет! Помогите, плиз, конвертировать String (или PChar) в Array of char....

Преобразование из Pchar в string происходит неправильно
function Price(ei : PChar) : real; begin ShowMessage(ei+ '***1');...

Работа с Pchar
Добрый день! У меня есть задача. Hанее почти не работал с PChar. Помогите...

Как переступить через #0 в PChar ?
К примеру Функция_В_ДЛЛ SetStr(Value: PChar): PChar; stdcall; begin // Валуя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru