Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
2-1134977546
oleg777
2005-12-19 10:32
2006.01.08
Регистрация в MSSQL Server 2000


6-1127413206
DelmaR
2005-09-22 22:20
2006.01.08
Список ресурсов удаленного компьютера


10-1111013938
val_5
2005-03-17 01:58
2006.01.08
Как работать с TwebConnection ?


14-1134270358
Думкин(_врем)
2005-12-11 06:05
2006.01.08
МВо, с Днем рождения!


2-1135237256
oleggar
2005-12-22 10:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский