Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите по TStringList; [D7]


Руслана ©   (2005-07-12 14:38:00) 

В процессе работы используется TStringList. Причем, разные функции пишут в него различные строки. Как правильно передавать TStringList в эти функции?
Если так WriteString1(List:TstringList) означает ли это, что весь TSTringList будем сначало помещаться в стек, а затем извлекаться.
Или можно передать только указатель на TStringList? Как?


begin...end   (2005-07-12 17:04:00) [1]

> Руслана   (12.07.05 16:32) [6]
> WriteEof(BinFile:File) - здесь тоже указатель?

Нет.

> Digitman ©   (12.07.05 16:42) [8]
> здесь передается копия значения.

Здесь ничего не передаётся. Это даже не скомпилируется.

> TUser ©   (12.07.05 16:46) [10]
> Или я не прав?

Не прав.


Anatoly Podgoretsky   (2005-07-12 16:51:00) [2]

VMcL ©   (12.07.05 16:42) [9]
Ну кто бы спорил, а то будут вопросы почему за стек ругается, так что const/var не помешает.


Юрий Зотов   (2005-07-12 16:47:00) [3]

> Руслана   (12.07.05 16:32) [6]

procedure ChangeArray(const Buf: mybuf);
И будет передаваться указатель.


  (2005-07-12 16:47:00) [4]

Удалено модератором


TUser   (2005-07-12 16:46:00) [5]

> Кроме собственно object'ов, если не ошибаюсь.

? Но с ними вроде бы нельзя работать непосредственно, а надо объявлять соотв. указатель. Или я не прав?


Digitman   (2005-07-12 16:42:00) [6]


> И насчет файлов
> Если имеется
> var
> BinFile:File;
> begin
>
> WriteEof(BinFile:File) - здесь тоже указатель?


здесь передается копия значения.
значением же является неявный указатель на неявную же упр.структуру данных типа File


VMcL   (2005-07-12 16:42:00) [7]

>>Anatoly Podgoretsky ©   (12.07.05 16:36) [7]

А если ещё и "const" к параметру дописать, то ваще лепота будет.


Anatoly Podgoretsky   (2005-07-12 16:36:00) [8]

Руслана   (12.07.05 16:32) [6]
ChangeArray(Buf:array of byte)

В этом случае передается массив констант. Объявить надо так
ChangeArray(Buf: mybuf)


Руслана   (2005-07-12 16:32:00) [9]

Хорошо, тогда еще вопрос

если у меня объявлен массив

type mybuf=array[0..131072]of byte;
var Buf:mybuf;

И я хочу передать его в функцию
ChangeArray(Buf:array of byte)
в этом случае тоже передается указатель?

И насчет файлов
Если имеется
var
BinFile:File;
begin

WriteEof(BinFile:File) - здесь тоже указатель?


VMcL   (2005-07-12 15:45:00) [10]

>> Юрий Зотов ©   (12.07.05 15:41) [4]

Кроме собственно object'ов, если не ошибаюсь.


Юрий Зотов   (2005-07-12 15:41:00) [11]

> Руслана   (12.07.05 14:42) [2]

В Delphi любая переменная объектного типа - это не сам объект, а указатель на него.


Ega23   (2005-07-12 14:47:00) [12]

Да. Это и есть передача указателя.


Руслана   (2005-07-12 14:42:00) [13]

Да, у меня так и объявлено.

var
List:TStringList;

То есть можно так и писать WriteString(List:TStringList) ?


Ega23   (2005-07-12 14:40:00) [14]

Или можно передать только указатель на TStringList? Как?

var
List:TStringList;

List в данном случае является указателем на экземпляр класса TStringList.


Наверх

Титульная страница Поиск, карта сайта Написать письмо