Главная страница
    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.009 c
14-1134536105
begin...end
2005-12-14 07:55
2006.01.08
С Днём рождения! 14 декабря


14-1134601699
ZeeM
2005-12-15 02:08
2006.01.08
Преобразование AnsiString во флоат


3-1131981734
remlin
2005-11-14 18:22
2006.01.08
Окно Data Link Properties


2-1135048842
Максим
2005-12-20 06:20
2006.01.08
TRadioButton


4-1130766908
Зм1й
2005-10-31 16:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский