![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите по 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.