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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

Люди есть в паскале ченибудь покрупнее String'а, т.е. чтоб болше чем 255 символов влезало????
Аватара пользователя
ЧИЖ
Сообщения: 29
Зарегистрирован: 24 фев 2007, 23:57
Контактная информация:

pchar - сколько хочешь (только в pchar индексация начинается с 0)
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

ЧИЖ писал(а):pchar - сколько хочешь (только в char индексация начинается с 0)
РЕЧЬ ИДЕТ О СТРОКАХ
Аватара пользователя
ЧИЖ
Сообщения: 29
Зарегистрирован: 24 фев 2007, 23:57
Контактная информация:

если бы ты заглянул в учебник (при наличии такового) то ты бы обнаружил что
pchar (PAnsiChar) это "строка с завершающим нулем" (#0) то есть строка в которой символы идут с нулевого а последний #0 и ее длина динамическая от 1 до упора оперативки
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

ЧИЖ писал(а):если бы ты заглянул в учебник (при наличии такового) то ты бы обнаружил что
pchar (PAnsiChar) это "строка с завершающим нулем" (#0) то есть строка в которой символы идут с нулевого а последний #0 и ее длина динамическая от 1 до упора оперативки
Ясно спасибо! :D

А вот как тогда к переменной типа РСhar присвоить значение функции GetEnv() (Unit Dos) ???
Аватара пользователя
ЧИЖ
Сообщения: 29
Зарегистрирован: 24 фев 2007, 23:57
Контактная информация:

из string в pchar переводит ф-я

Код: Выделить всё

pchar(s:string) :p char
, а обратно томоему str точно не помю (обычно из string в pchar перевожу) но если str некатит можно циклом посимвольно.
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

выдает ошибку!
[HTML]{$mode delphi}
Uses
Dos;
Var
query: pchar;

PROCEDURE Init;
Begin
writeln('content-type: text/html');
writeln;
End;

Begin
query:= pchar(getenv('QUERY_STRING'));
Init;
writeln('<html>');
writeln(query);
writeln('</html>');
End. [/HTML]

В чем причина, что неправильно??
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

itwork, а чем тебя делфи не устроил? у делфи строки могут быть любого размера, (я пробовал создавать строку размеров в 2Mb - время создания около 2 сек).
В делфях в лёгкую можно делать консольные приложения. А паскаль ограничен в размере типа String, да и устарел он однако...
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

SergeyS писал(а):itwork, а чем тебя делфи не устроил? у делфи строки могут быть любого размера, (я пробовал создавать строку размеров в 2Mb - время создания около 2 сек).
В делфях в лёгкую можно делать консольные приложения. А паскаль ограничен в размере типа String, да и устарел он однако...
СНАЧАЛО НАДО НАУЧИТСЯ НА ПАСКАЛЕ А ПОТОМ ПЕРЕХОДИТЬ НА DELPHI!

ВОПРОС ОСТАЛСЯ ТОТЖЕ
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

itwork писал(а):выдает ошибку!
...
В чем причина, что неправильно??
Ну с точки зрения, например, Borland Pascal 7.0
Тут много ошибок

query:= pchar(getenv('QUERY_STRING'));

1)
Сама функция getenv возвращает результат типа Pascal String. Поэтому решение уже никак не подходит под начальные условия задачи.
2)
В Borland Pascal тайп-каст pchar(X) недопустим. Вам нужно выделить память под строку и указатель на эту область присвоить в query
GetMem(query,2048),
затем "запихать" туда результат функции getenv, дописать ручками символ Chr(0) в конце строки.
Только тогда получится полноценный Pchar.

В Object Pascal (Delphi) тип String стал совместимым с Pchar, поэтому упомянутые тайп-касты работают.

PS
Я не понял, что за директива $mode. Для более детального разговора сообщите каким компилятором пользуетесь. И еще, если хотите спросить про ошибку в коде всегда указывайте в какой строке ее находит компилятор, и какими словами он ругается.
Ответить