Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизTStringList и ListBox.Items Найти похожие ветки
← →
killer © (2004-04-06 13:59) [0]Подскажите пожалуйста что я делаю не так...
созлал функцию...
function Add(Str: Strings): boolean;
begin
if ... then
begin
Result:=true;
Str.AddStrings(...);
end
else
begin
Result:=false;
end;
end;
а в программе пишу:
procedure OnClick....
var
Str: TStringList;
begin
Str:=TStringList.Create;
if Add(Str)=true then
begin
ListBox.Items:=Str;
end;
Str.Free;
end;
У меня почему-то вылетает ошибка... Если убрать
"Str.Free" то ошибки нет... Почему так? Переменная Str потом уничтожается? Хотелось бы действовать по такому алгоритму...
Т.е. не подставлять ListBox.Items вместо Str...
← →
TUser © (2004-04-06 14:01) [1]listBox.Items.Assign(Str)
← →
killer © (2004-04-06 14:17) [2]Всеравно таже ситуация... Таже ошибка вылитает...
А без "Str.Free" не вылитает...
← →
KapitanSerg © (2004-04-06 14:19) [3]>function Add(Str: Strings): boolean;
Что за тип "Strings"?
← →
killer © (2004-04-06 14:20) [4]ой... там TStrings
← →
MBo © (2004-04-06 14:21) [5]Приведи точный код (без такого: Str: Strings)
← →
killer © (2004-04-06 14:26) [6]function Add(Str: TStrings): boolean;
begin
if (какое-то условие) then
begin
Result:=true;
Str.AddString("1");
end
else
begin
Result:=false;
end;
end;
........................
procedure OnClick....
var
Str: TStringList;
begin
Str:=TStringList.Create;
if Add(Str)=true then
begin
ListBox.Items:=Str;
end;
Str.Free;
end;
← →
Леприкон © (2004-04-06 14:29) [7]
function TForm1.Add(Str: TStrings): boolean;
begin
if 1=1 then //(какое то условие)
begin
Result:=true;
Str.AddStrings(Memo1.Lines);
end
else
begin
Result:=false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var Str: TStringList;
begin
Str:=TStringList.Create;
if Add(Str)=true then
begin
Memo2.Lines:=Str;
end;
Str.Free;
end;
Чего то у меня никакой ошибки.
PS: Я на примере TMemo разбирал...
← →
KapitanSerg © (2004-04-06 14:30) [8]А зачем "ListBox.Items:=Str" если потом "Str.Free"? Т.е. после выполненя OnClick.... значение ListBox.Items буден показывать погоду на Аляске!
← →
Anatoly Podgoretsky © (2004-04-06 14:30) [9]Вот это вылетает еще загадочнее
← →
bigsnake (2004-04-06 14:33) [10]
Str.AddString("1");
- бред
← →
Леприкон © (2004-04-06 14:35) [11]to killer
А всё таки Str.AddStrings или Str.AddString ?
← →
killer © (2004-04-06 14:37) [12]Леприкон Всетаки Str.AddStrings...)))
← →
KapitanSerg © (2004-04-06 14:37) [13]>bigsnake (06.04.04 14:33) [10]
ListBox.Items:=Str; тоже самое!
← →
killer © (2004-04-06 14:38) [14]KapitanSerg как тогда быть? Что делать?
← →
KapitanSerg © (2004-04-06 14:39) [15]>killer © (06.04.04 14:38) [14]
Для начала хотя бы понять - а что нужно сделать?
← →
killer © (2004-04-06 14:54) [16]KapitanSerg Передать в ListBox.Items строки... эти строки считывает функция (Add)...
← →
KapitanSerg © (2004-04-06 14:57) [17]var
s : string;
Begin
s := "Первая строка";
ListBox.Items.Add(s);
end;
← →
MBo © (2004-04-06 14:59) [18]Повторю [5], поскольку в [6] опять туфта, а не реальный код.
ListBox.Items:=Str;
приводит к выполнению Assign, так что объект Str больше не нужен (название, BTW, неудачное - Str - название стандартной процедуры)
← →
killer © (2004-04-06 15:02) [19]а Str без строки "Str.Free" в процедуре из памяти сотрется?
← →
KapitanSerg © (2004-04-06 15:04) [20]>MBo © (06.04.04 14:59) [18]
Не знал... Согласен. Но все же зачем вообще нужна "function Add(Str: TStrings): boolean;"?
← →
MBo © (2004-04-06 15:04) [21]>из памяти сотрется?
нет.
Где код?
Исправленный (как в Леприкон © (06.04.04 14:29) [7] ) не выдаст никакой ошибки.
← →
killer © (2004-04-06 15:07) [22]KapitanSerg Она у меня экспортируется из DLL
← →
killer © (2004-04-06 15:16) [23]куда все сбежали???
← →
Владислав © (2004-04-06 15:22) [24]Ты же ничего не говоришь. Даже не сказал, какая ошибка возникает.
← →
Miwa © (2004-04-06 15:46) [25]Основываясь на
killer © (06.04.04 14:54) [16]
осмелюсь порекомендовать связку Add + F1 и AddStrings + F1 и не писать функции, которые до тебя написали более знающие (опять риск предположения ;о)) ) люди.
← →
killer © (2004-04-06 15:51) [26]Выскакивает окно...
"Project Project1.exe raised exception class EInvalidPointer with message "Invalid pointer operation". Process stopped. Use Step or Run to continue"
← →
Владислав © (2004-04-06 15:52) [27]У тебя эта функция:
function Add(Str: TStrings): boolean
находится в другой dll?
← →
Леприкон © (2004-04-06 15:54) [28]
> killer © (06.04.04 15:51) [26]
Точный код функции давай.
← →
killer © (2004-04-06 15:54) [29]как в другой? Только программа и эта Dll...
в программе она загружается динамически...
← →
killer © (2004-04-06 15:56) [30]он длинный очень...... вобщем он из файла их считывает...
← →
killer © (2004-04-06 15:56) [31]поэтому я и сделал это в DLL... чтобы память особо не грузить......
← →
Владислав © (2004-04-06 15:58) [32]Ну, надеюсь, ShareMem ты используешь. Если да, то код давай.
← →
killer © (2004-04-06 16:01) [33]Владислав а разве с типом TStrings и его потомками этот модуль нужен? Он вроде только со "string"
← →
Владислав © (2004-04-07 10:27) [34]Интересно, а чем же ты экземпляр класса TStrings заполняешь?
Кроме всего прочего, есть и еще проблемы. Так что лучше пересмотри подход.
← →
Solik © (2004-04-07 10:47) [35]Или я дурак или...
Вобще то в KOLе
Str:=TStringList.Create - так не делают
по-моему там чето типа
Str:=NewStrList
Разве нет???
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.032 c