Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 19:57   #1
vandrouny
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 42
По умолчанию Конвертация String в PAnsiChar в Delphi

В общем, простенькая программка, которая считает кол-во символов в Memo (все кроме пробелов)
Код:
n:integer; 
i,j:integer; 
stemp: string;

for i:=1 to memo1.lines.count-1 do
  begin
  stemp:=Memo1.Lines.Strings[i-1];
  for j:=1 to StrLen(stemp) do
  if stemp[j]<>' ' do
  n++;
  end;
Но выдаёт ошибку, мол, StrLen принимает только тип PAnsiChar. А если сделать stemp: PAnsiChar; то ругается на присвоение stemp:=Memo1.Lines.Strings[i-1], мол, разные типы. Что делать? Можно ли эти типы конвертировать?
vandrouny вне форума Ответить с цитированием
Старый 28.10.2010, 19:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

замените на Length(Memo1.Lines.Text)
и все ОК
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.10.2010, 20:06   #3
vandrouny
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 42
По умолчанию

Простите, а какую строчку заменить на Length(Memo1.Lines.Text)?
Что-то торможу
vandrouny вне форума Ответить с цитированием
Старый 28.10.2010, 20:16   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не строчку а StrLen(stemp), правда там надо Length(stemp)
а вообще проще так:

Код:
n:=0;
for i:=1 to Length(memo1.lines.Text) do
  if Memo1.Lines.Text[i]<>' ' do inc(n);
кстати ++ в Делфи вроде как нету
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.10.2010, 21:54   #5
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Заменить
Код:
StrLen(stemp)
на
Код:
StrLen(PChar(stemp))
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 28.10.2010, 22:27   #6
vandrouny
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 42
По умолчанию

Ой, что-то у меня уже шарики за ролики заехали) 10 строчек, а столько ошибок)
В этом семестре у нас ужас что творится, пишем лабы сразу на 3 языках, да ещё курсовая)
В общем, вот правильный код (построчную обработку я оставил, так как мне это потом ещё надо будет)
Код:
n:=0;
for i:=1 to memo1.lines.count do
  begin
  stemp:=Memo1.Lines.Strings[i-1];
  for j:=1 to Length(stemp) do
  if stemp[j]<>' ' then
  inc (n);
  end;
Спасибо за помощь!
vandrouny вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из String в Pansichar пауэрлифтинг Общие вопросы Delphi 10 05.02.2010 02:40
как из string перевести в PAnsiChar Sparky Общие вопросы Delphi 3 29.08.2009 14:12
перевод String to PAnsiChar (Запуск других приложений) ke6ko Общие вопросы Delphi 2 09.07.2009 20:47
Конвертация типа string в int Mixasik Общие вопросы C/C++ 10 25.04.2009 02:58
pansichar to string Toxa Общие вопросы Delphi 16 31.05.2007 13:40