Страница 1 из 2

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

Добавлено: 31 мар 2007, 14:52
itwork
Люди есть в паскале ченибудь покрупнее String'а, т.е. чтоб болше чем 255 символов влезало????

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

Добавлено: 31 мар 2007, 15:25
ЧИЖ
pchar - сколько хочешь (только в pchar индексация начинается с 0)

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

Добавлено: 31 мар 2007, 15:33
itwork
ЧИЖ писал(а):pchar - сколько хочешь (только в char индексация начинается с 0)
РЕЧЬ ИДЕТ О СТРОКАХ

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

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

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

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

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

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

Добавлено: 31 мар 2007, 17:38
ЧИЖ
из string в pchar переводит ф-я

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

pchar(s:string) :p char
, а обратно томоему str точно не помю (обычно из string в pchar перевожу) но если str некатит можно циклом посимвольно.

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

Добавлено: 31 мар 2007, 17:55
itwork
выдает ошибку!
[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]

В чем причина, что неправильно??

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

Добавлено: 31 мар 2007, 18:39
SergeyS
itwork, а чем тебя делфи не устроил? у делфи строки могут быть любого размера, (я пробовал создавать строку размеров в 2Mb - время создания около 2 сек).
В делфях в лёгкую можно делать консольные приложения. А паскаль ограничен в размере типа String, да и устарел он однако...

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

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

ВОПРОС ОСТАЛСЯ ТОТЖЕ

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

Добавлено: 31 мар 2007, 22:05
Naeel Maqsudov
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. Для более детального разговора сообщите каким компилятором пользуетесь. И еще, если хотите спросить про ошибку в коде всегда указывайте в какой строке ее находит компилятор, и какими словами он ругается.