Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться в Delphi работает в Buildere нет. [D7, WinXP]


Kolan ©   (2004-12-06 22:24:00) 

В Delphi это проходит:
function TForm1.Cool: TStringList;
var
 S: TStringList;
begin
 S := TStringList.Create;
 S.Add('sdfsd');
 Result := S;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

 Memo1.Lines.AddStrings(Cool);
end;


В вот в Buildere не поймо как правильно:
TStringList __fastcall TMainForm::Cool()
{
 TStringList *S = new TStringList;
 S->Add("sdfs");
 Memo1->Lines->AddStrings(S);
 return S;
}

//---------------------------------------------------------------------------

void __fastcall TMainForm::BitBtn1Click(TObject *Sender)
{
 Memo1->Lines->AddStrings(Cool());
}

Ошибки выдаёт:
Build
 [C++ Error] KJavaParserMainForm.cpp(43): E2034 Cannot convert 'TStringList *' to 'TStringList'
 [C++ Error] KJavaParserMainForm.cpp(51): E2034 Cannot convert 'TStringList' to 'TStrings *'
 [C++ Error] KJavaParserMainForm.cpp(51): E2342 Type mismatch in parameter 'Strings' (wanted 'TStrings *', got 'TStringList')


KADAN   (2004-12-07 09:50:00) [1]

мда... во-первых ЮЮ сказал верно
во-вторых ты объявил ф-цию как TStringList, а она у тебя пытается вернуть указатель на него, нехорошо наверна... (это про си)


DiamondShark   (2004-12-07 09:42:00) [2]

TStringList *__fastcall TMainForm::Cool()


ЮЮ   (2004-12-07 04:41:00) [3]

Это называется не Cool, а Leak: созданный в функции TStringList никем уничтожен не будет, а ссылка на него - потеряна


procedure TForm1.Cool(Strings: TStrings);
begin
 Strings.Add('sdfsd');
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 Cool(Memo1.Lines);
end;


GuAV   (2004-12-06 23:19:00) [4]

Kolan ©   (06.12.04 22:24)
function TForm1.Cool: TStringList;
var
S: TStringList;
begin
S := TStringList.Create;
S.Add('sdfsd');
Result := S;
end;


можно заменить на

function TForm1.Cool: TStrings;
var
S: TStringList;
begin
S := TStringList.Create;
S.Add('sdfsd');
Result := S;
end;

и в D будет IMHO лучше и в C наверное поможет.


Kolan   (2004-12-06 23:03:00) [5]

Все спят  что-ли или вопрос не нравится.
PS Спать охота подсказали бы, я б сделал и спать пошел :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо