Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: CL | DM;

Вниз

Как воспользоваться функцией   Найти похожие ветки 

 
alex-drob ©   (2005-12-13 23:09) [0]

Если у функции возращаемое значение Tstrings, Tbitmap и т.д.
Как вызвать такую функцию?

Например есть функция:

function f:TStrings;
begin
Result.Add("Стр 1");
Result.Add("Стр 2");
end;


Как её вызвать?

Пробовал:

f:=TStrings.Create;
...
f.Free;


не получается.


 
версия для печати   (2005-12-13 23:14) [1]

Ты шутишь чтоли?


 
неважно   (2005-12-13 23:15) [2]


function f:TStrings;
begin
 Result.Add("Ñòð 1");
 Result.Add("Ñòð 2");
end;

procedure TForm1.Button1Click(Sender: TObject);
var Q:TStringList;
begin
 Q:=TStringList.Create;
 Q.AddStrings(f);
 Q.Free;
end;


 
Gero_   (2005-12-13 23:15) [3]


> f:=TStrings.Create;

Так делать нельзя. Используй наследников TStrings, у которых перекрыты абстрактные методы.


 
alex-drob ©   (2005-12-13 23:40) [4]

А можно пример как записать в Memo результат выполнения этой функции.


 
Карелин Артем ©   (2005-12-13 23:48) [5]

memo.lines.text:=CreatedList.text;


 
Petr V.Abramov   (2005-12-13 23:58) [6]

> alex-drob ©   (13.12.05 23:09)  

> Например есть функция:
> function f:TStrings;
> begin
>   Result.Add("Стр 1");
>   Result.Add("Стр 2");
> end;

Ничего, кроме Access Violation такая функция не даст, поскольку Result в ней не создается. А если его в ней создать (что не проблема), то при использовании такой функции нужно будет постоянно помнить, что созданный ею объект нужно где-то снаружи уничтожить.

В общем, не советовал бы я писать такие функции. Плохой это стиль. Ужасный просто.


 
alex-drob ©   (2005-12-14 00:02) [7]


> нужно где-то снаружи уничтожить.


А как это cделать? По этому я и не создавал в ней Result.


 
Юрий Зотов ©   (2005-12-14 00:09) [8]

> alex-drob ©   (14.12.05 00:02) [7]

Что ж, если-таки  есть непреодолимое желание следовать дурному стилю, то так:

function F: TStrings;
begin
 Result := TStringList.Create;
 Result.Add("Стр 1");
 Result.Add("Стр 2");
end;

В программе:

with F do
try
 Memo1.Lines.Assign(Strings);
 ...
finally
 Free
end;

или так:

var
 Str: TStrings;
begin
 Str: = F;
 try
   Memo1.Lines.Assign(Str.Strings);
   ...
 finally
   Str.Free
 end
end;


 
alex-drob ©   (2005-12-14 00:18) [9]


> Что ж, если-таки  есть непреодолимое желание следовать дурному
> стилю, то так:

Я не писал такую функцию в программе, просто пришло в голову и я решил поинтерисоваться как это можно сделать.

Спасибо всем за помощь!


 
Карелин Артем ©   (2005-12-14 00:39) [10]


> Юрий Зотов ©   (14.12.05 00:09) [8]

Вопрос по стилю: хорошо ли использовать переменную, у которой название совпадает с стандартной функцией?


 
Petr V.Abramov   (2005-12-14 00:46) [11]

> Карелин Артем ©   (14.12.05 00:39) [10]

Не думаю, что это хорошо. Ничего страшного, конечно, не случится, но зачем вносить в исходники никому не нужную путаницу, если можно совершенно спокойно придумать для переменной другое имя?


 
DrPass ©   (2005-12-14 00:55) [12]


> Вопрос по стилю: хорошо ли использовать переменную, у которой
> название совпадает с стандартной функцией?

Плохо


 
Карелин Артем ©   (2005-12-14 01:15) [13]


> Карелин Артем ©   (14.12.05 00:39) [10]

Поправка малюсенькая: процедурой, не функцией ))



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

Текущий архив: 2006.01.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
14-1134396390
kaif
2005-12-12 17:06
2006.01.08
Взглянул на баннер Visual Studio :)


1-1133969906
sia
2005-12-07 18:38
2006.01.08
TStringGrid суммирующая строка


11-1116426061
Владимир Кладов
2005-05-18 18:21
2006.01.08
инициализация Color в MCK


1-1133989699
graffik
2005-12-08 00:08
2006.01.08
Управление компонентами в среде Solid Works посредством Delphi


1-1133955846
Aleksandr.
2005-12-07 14:44
2006.01.08
Как определить видимость дочернего окна?





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