Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

чёнибудь покрупнее STRING'а

2.2K
31 марта 2007 года
00mike00
82 / / 17.09.2006
:confused: Люди есть в паскале ченибудь покрупнее STRING'а, т.е. чтоб болше чем 255 символов влезало????
622
31 марта 2007 года
nilbog
507 / / 19.12.2006
packed array[0..n] of char
смотря что вам нужно
2.2K
31 марта 2007 года
00mike00
82 / / 17.09.2006
в смысле какой тип нужно использовать чтоб присвоить строку из 370 знаков?? или как иначе сделать??
622
31 марта 2007 года
nilbog
507 / / 19.12.2006
стандартного типа нет
либо использовать просто массив символов(придется самим реализовать все для работы) но мне кажется что можно найти более элегантное решение проблемы чем такие массивы
10
31 марта 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: 00mike00
в смысле какой тип нужно использовать чтоб присвоить строку из 370 знаков??


TP 6.0 и выше - PChar.

2.2K
31 марта 2007 года
00mike00
82 / / 17.09.2006
Цитата: Freeman
TP 6.0 и выше - PChar.



А вот как тогда к переменной типа РСhar присвоить значение функции GetEnv() (Unit Dos) ???

10K
31 марта 2007 года
s-haman
64 / / 27.03.2007
Я бы посоветовал делать массив типа чар, посидеть недельку понаписывать функции(в отдельный модуль и потом горя небудет так как длина почти небудет ограничена и если что нетак можеш всегда переписать)
257
01 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=00mike00]А вот как тогда к переменной типа РСhar присвоить значение функции GetEnv() (Unit Dos) ???[/quote]
подключи модуль strings и используй StrPCopy, будет примерно так:
 
Код:
uses dos, strings;
var p:PChar;
<...>
StrPCopy(p,GetEnv('что ты тут укажешь твое дело'));
<...>
10
01 апреля 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: 00mike00
А вот как тогда к переменной типа РСhar присвоить значение функции GetEnv() (Unit Dos) ???


Если GetEnv должен вернуть строку длиннее 255 символов, то стандартными средствами - никак. Придётся брать PChar и расписывать обращение к DOS на ассемблере вручную.

Цитата: s-haman
посидеть недельку понаписывать функции(в отдельный модуль


Вот и изобретай велосипеды, раз нравится.

Цитата: s-haman
длина почти небудет ограничена


Ещё как будет - это DOS. Ограничение - 32 кб на строку (кажется). Или 64, не помню уже.

622
01 апреля 2007 года
nilbog
507 / / 19.12.2006
64 кажется
а иначе "to big structure" )
2 в 16 - 64k сегмент
10
01 апреля 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: nilbog
а иначе "to big structure" )
2 в 16 - 64k сегмент


А если Integer использовать для указания длины? Он ведь знаковый.

622
01 апреля 2007 года
nilbog
507 / / 19.12.2006
ну integer это тот же word по размеру
так что array[integer] не пройдет тоже
[0..65534] не 35 уже должно работать
хотя это ужас конечно
10
01 апреля 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: nilbog
ну integer это тот же word по размеру


Я к тому, что длина не может быть отрицательной, и ограничение в 32К напрашивается само собой.

622
01 апреля 2007 года
nilbog
507 / / 19.12.2006
нуу нет
длина то не может быть отрицательной а индексы массива вполне
array[-n..n] of char допустимо при n>0
а длина определится как кол-во эл-ов
64к это все таки из-за сегментирования памяти
ps по сабжу в общем это не важно-мы от темы отходим такие массивы не стоит использовать
если заранее не знаем размер то динамические структуры будут решением
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог