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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.065 c
11-1064827222
ASilver
2003-09-29 13:20
2004.04.25
Проблема с Bitmap


1-1081410481
LORDMAXX
2004-04-08 11:48
2004.04.25
КАК ЛЕЧИТЬ File not found DsgnIntf ???


1-1081227057
[BAD]Angel
2004-04-06 08:50
2004.04.25
Как скопировать выделенный текст в буфер обмена?


4-1077110304
МАКСЮХА
2004-02-18 16:18
2004.04.25
Как использовать CreateProcessAsUser?


14-1081134433
Паниковский
2004-04-05 07:07
2004.04.25
"Мир программирования"