чёнибудь покрупнее String'а
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Люди есть в паскале ченибудь покрупнее String'а, т.е. чтоб болше чем 255 символов влезало????
pchar - сколько хочешь (только в pchar индексация начинается с 0)
РЕЧЬ ИДЕТ О СТРОКАХЧИЖ писал(а):pchar - сколько хочешь (только в char индексация начинается с 0)
если бы ты заглянул в учебник (при наличии такового) то ты бы обнаружил что
pchar (PAnsiChar) это "строка с завершающим нулем" (#0) то есть строка в которой символы идут с нулевого а последний #0 и ее длина динамическая от 1 до упора оперативки
pchar (PAnsiChar) это "строка с завершающим нулем" (#0) то есть строка в которой символы идут с нулевого а последний #0 и ее длина динамическая от 1 до упора оперативки
Ясно спасибо!ЧИЖ писал(а):если бы ты заглянул в учебник (при наличии такового) то ты бы обнаружил что
pchar (PAnsiChar) это "строка с завершающим нулем" (#0) то есть строка в которой символы идут с нулевого а последний #0 и ее длина динамическая от 1 до упора оперативки

А вот как тогда к переменной типа РСhar присвоить значение функции GetEnv() (Unit Dos) ???
из string в pchar переводит ф-я , а обратно томоему str точно не помю (обычно из string в pchar перевожу) но если str некатит можно циклом посимвольно.
Код: Выделить всё
pchar(s:string) :p char
выдает ошибку!
[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]
В чем причина, что неправильно??
[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, да и устарел он однако...
В делфях в лёгкую можно делать консольные приложения. А паскаль ограничен в размере типа String, да и устарел он однако...
СНАЧАЛО НАДО НАУЧИТСЯ НА ПАСКАЛЕ А ПОТОМ ПЕРЕХОДИТЬ НА DELPHI!SergeyS писал(а):itwork, а чем тебя делфи не устроил? у делфи строки могут быть любого размера, (я пробовал создавать строку размеров в 2Mb - время создания около 2 сек).
В делфях в лёгкую можно делать консольные приложения. А паскаль ограничен в размере типа String, да и устарел он однако...
ВОПРОС ОСТАЛСЯ ТОТЖЕ
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ну с точки зрения, например, Borland Pascal 7.0itwork писал(а):выдает ошибку!
...
В чем причина, что неправильно??
Тут много ошибок
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. Для более детального разговора сообщите каким компилятором пользуетесь. И еще, если хотите спросить про ошибку в коде всегда указывайте в какой строке ее находит компилятор, и какими словами он ругается.