V>Эта программка возвращает значение LPTSTR, когда я получаю это значение у меня совсем не строка, как передать строку?
ты возвращаешь не строку а указатель. А уж на что он указывает — это уже из области видимости.
Попробовать конечно нужно, но таким образом вернуть локальную строку можно только при наличии у объекта контруктора с параметром возвращаеиого указателя.
Обычно это делают передачей указателя на буффер над которым и производятся преобразования, но внутри обязательно делают временный и если преобразования во временном прошли успешно, то делают копирование во внешний буффер.
Здравствуйте, Alexmoon, Вы писали:
A>ты возвращаешь не строку а указатель. А уж на что он указывает — это уже из области видимости. A>Попробовать конечно нужно, но таким образом вернуть локальную строку можно только при наличии у объекта контруктора с параметром возвращаеиого указателя. A>Обычно это делают передачей указателя на буффер над которым и производятся преобразования, но внутри обязательно делают временный и если преобразования во временном прошли успешно, то делают копирование во внешний буффер.
А можно поподробней, как же все таки передать строку?
Здравствуйте, Другой Аноним, Вы писали:
ДА>Это невозможно. Функция main должна возвращать int и только int.
И как можно передать строку, только через файл?
Здравствуйте, Vodolaz, Вы писали:
V>Здравствуйте, Alexmoon, Вы писали:
A>>ты возвращаешь не строку а указатель. А уж на что он указывает — это уже из области видимости. A>>Попробовать конечно нужно, но таким образом вернуть локальную строку можно только при наличии у объекта контруктора с параметром возвращаеиого указателя. A>>Обычно это делают передачей указателя на буффер над которым и производятся преобразования, но внутри обязательно делают временный и если преобразования во временном прошли успешно, то делают копирование во внешний буффер.
V>А можно поподробней, как же все таки передать строку?
может с классом и не пройдет, но просто так никогда не делал, но думаю, что проблем быть не должно.
class A
{
LPTSTR tstr;
public:
A(LPTSTR lpstr)
{
tstr = new TSTR[tcslen(lpstr)+1];
tcscpy(lptstr, tstr);
};
~A() { delete tstr; };
GetBuffer(LPTSTR tsstr) {tcspy(tsstr, tstr);};
};
LPTSTR function(LPTSTR lptstr)
{
TSTR str[255];
_tcscpy(lptstr, str);
//преобразования str
_tcscpy(str, lptstr);
return str;
}
void main (void)
{
TSTR lpsz[255];
A a = function(lpsz);
//по идее объект a и lpsz должны содержать копии буфферов
}
могут быть и ошибки. С объектом не проверял, но по логике вещей должно работать.
Извини спешу.
V>Эта программка возвращает значение LPTSTR, когда я получаю это значение у меня совсем не строка, как передать строку?
Нарушены сразу ДВА стандарта: С и С++
по стандарту функция main может возвратить ТОЛЬКО int. Это значение можно проверить, например в командном файле, чтобы решить, что делать. Строки главная функция возвращать не умеет. Тем более, что возвращается не строка а указатель.
Единственный легальный способ — вывести строку в файл и оттуда уже ее проверять.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Vodolaz, Вы писали:
ДА>>Это невозможно. Функция main должна возвращать int и только int. V>И как можно передать строку, только через файл?
Во-первых, нужно понять: кому передать, в каком контексте?
Читаем справку: "The Run method returns an integer."
Однако ведь retVal не является конечным предназначением этих данных, не так ли? Если б знать куда эти данные должны потом попасть, можно было бы попробовать предложить другой способ.
Здраствуйте, Alexmoon. Вы писали:
A> может с классом и не пройдет, но просто так никогда не делал, но думаю, A> что проблем быть не должно. A> A>
A> class A
A> {
A> LPTSTR tstr;
A> public:
A> A(LPTSTR lpstr)
A> {
A> tstr = new TSTR[tcslen(lpstr)+1];
A> tcscpy(lptstr, tstr);
A> };
A> ~A() { delete tstr; };
A>
A> GetBuffer(LPTSTR tsstr) {tcspy(tsstr, tstr);};
A> };
A>
A> LPTSTR function(LPTSTR lptstr)
A> {
A> TSTR str[255];
A> _tcscpy(lptstr, str);
A> //преобразования str
A> _tcscpy(str, lptstr);
A> return str;
A> }
A>
A> void main (void)
A> {
A> TSTR lpsz[255];
A> A a = function(lpsz);
A> //по идее объект a и lpsz должны содержать копии буфферов
A> }
A>
A> A> могут быть и ошибки. С объектом не проверял, но по логике вещей должно A> работать. Извини спешу.
При выходе из main благополучно умирают как объект a, так и массив lpsz
Здравствуйте, PM, Вы писали:
PM>Здраствуйте, Alexmoon. Вы писали:
PM>При выходе из main благополучно умирают как объект a, так и массив lpsz
это я думаю и так всем понятно
я думал что суть вопроса состоит в возврате временного буффера, а не сохранения результатов работы после выхода из main.
тогда все в файл. Тут все уже очень зависит от конкретной задачи. и зачем? приведи пример такой необходимости.
Здравствуйте, Alexmoon, Вы писали:
PM>>При выходе из main благополучно умирают как объект a, так и массив lpsz A>это я думаю и так всем понятно A>я думал что суть вопроса состоит в возврате временного буффера, а не сохранения результатов работы после выхода из main. A>тогда все в файл. Тут все уже очень зависит от конкретной задачи. и зачем? приведи пример такой необходимости.
Вопрос не ко мне, я не могу придумать, зачем такое нужно