Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
11-1063861417
AndrewA
2003-09-18 09:03
2004.04.25
Несоответствие в TrimLeft


14-1080711515
Ozone
2004-03-31 09:38
2004.04.25
exp + ассемблер


1-1081332094
Bond
2004-04-07 14:01
2004.04.25
Крупные элементы управления и текст


6-1077909579
Russu
2004-02-27 22:19
2004.04.25
SMTP сервер


4-1072773696
Коля
2003-12-30 11:41
2004.04.25
ExitWindowsEx(...





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