Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Несовпадение типов String и PAnsiChar


Автор: mr.Anderson 24.9.2006, 15:40
Есть листбокс, в котором некоторые строчки.
Надо запустить консольное приложение с параметром, который написан в одной из строчек листбокса.
Пробую так сделать:
Код

WinExec( '"bin\tpc.exe" ' + ListBox.Items.Strings[2] );

Компилер ругается на несовместимые типы String и PAnsiChar:
Цитата

[Error] MainUnit.pas(660): Incompatible types: 'String' and 'PAnsiChar'

Как это можно обойти?

Автор: drkot 24.9.2006, 15:42
Код

WinExec(PChar('"bin\tpc.exe" ' + ListBox.Items.Strings[2]));

вот так должно работать.

Автор: Snowy 24.9.2006, 15:42
Код

WinExec(PChar('"bin\tpc.exe" ' + ListBox.Items.Strings[2]));

Автор: mr.Anderson 24.9.2006, 15:43
Как получить из String PAnsiChar, я уже нашел. А наоборот как?

Автор: Alexeis 24.9.2006, 16:05
Цитата(sim7 @  24.9.2006,  15:43 Найти цитируемый пост)
А наоборот как? 

Просто присвоить их, компилятор сам преобразут.

Автор: Matematik 24.9.2006, 16:05
Цитата(sim7 @  24.9.2006,  16:43 Найти цитируемый пост)
Как получить из String PAnsiChar, я уже нашел. А наоборот как? 

Код

String := PAnsiChar;

Автор: Romikgy 24.9.2006, 16:44
sim7, StrPas
Код

Converts null-terminated string to an AnsiString (long string).

Unit

SysUtils

Category

backward compatibility routines

Delphi syntax:

function StrPas(const Str: PChar): string;

C++ syntax:

extern PACKAGE AnsiString __fastcall StrPas(const char * Str);

Description

This function is provided for backwards compatibility only. To convert a null terminated string to an AnsiString or native Delphi language string, use a typecast or an assignment.

Автор: mr.Anderson 24.9.2006, 19:02
Спасибо, Showy! По вашему методу получилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)