Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Преобразование TCaption в Pchar


Страницы:   1 2

Fenix ©   (2006-03-09 19:55:00) 

У меня код:
TextTag:=PChar(form1.Edit1.Text+form1.Edit1.Text);
Возникает ошибка. form1.Edit1.Text возращает на 1 символ больше (символ конца строки). Как это можно обойти? Просто String я не могу пользоваться, т.к. у меня этот код используеться в Dll. Подскажите как можно раелизовать правиьно сложение строк?


Fenix   (2006-03-09 22:24:00) [21]


> PCHar - это указатель, а на что ему указывать - надо правильно
> делать
> Так он указывает на мусор, который получился после выделения
> (и освобождения) локальной памяти для суммы строк.

Тогда как мне быть?? как мне правильно реализовать объединение и передачу строки?


Fenix   (2006-03-09 22:23:00) [22]

Вот я тоже думаю что не должно....а ошибка то выдаеться, притом если Edit'ы заполнены... если они пусты то все норм выдает...


Desdechado   (2006-03-09 22:23:00) [23]

PCHar - это указатель, а на что ему указывать - надо правильно делать
Так он указывает на мусор, который получился после выделения (и освобождения) локальной памяти для суммы строк.


tesseract   (2006-03-09 22:18:00) [24]

Вроде не должно, ежели texttag - глобальная переменная, это внутренние переменные при выходе освобождаются.


Desdechado   (2006-03-09 22:14:00) [25]

у тебя не лишние символы появляются, у тебя область памяти, на которую указывает PChar освобождается при выходе из процедуры, и там просто мусор остается


Fenix   (2006-03-09 22:04:00) [26]


var
 Form1: TForm1;
 Texttag:Pchar;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if form1.CheckBox1.Checked then
TextTag:=PChar('< href='+form1.Edit2.Text+' title='+Form1.Edit1.Text+' target=_blank>'+form1.edit1.Text+'</a>')
else
TextTag:=PChar('< href='+form1.Edit2.Text+' title='+Form1.Edit1.Text+' >'+form1.edit1.Text+'</a>');
end;

Вот обработчик функци.....

Ошибка возникает именно когда Edit не пустые...


Desdechado   (2006-03-09 22:02:00) [27]

> Это в самой обаботки ДЛЛ Result:=TextTag;
ну, а саму функцию не желаешь показать
а ошибка в каком месте и при каком вызове?


Fenix   (2006-03-09 22:01:00) [28]

Когда я допустим в ДЛЛ пишу
TextTag:=PChar('asdfasdfafd'+'asdfasdf');
то он нормально объединяет строки

а когда
TextTag:=PChar(form1.Edit1.Text+form1.Edit2.Text);
то выдает ошибку....


Fenix   (2006-03-09 21:53:00) [29]

Эта функция у меня в ДЛЛ.

Это в Unit1(форма в ДЛЛ)
TextTag:=PChar(form1.Edit1.Text);

Это в самой обаботки ДЛЛ
Result:=TextTag;


tesseract   (2006-03-09 21:49:00) [30]


> asdf\x14

а кто вам сказал, что это символ конца строки?

И вопрос откуда ты вызываешь свою функцию?


Fenix   (2006-03-09 21:46:00) [31]

raised exeption class EAccessViolation whith messange "Access Violetion at adress 00404133 in module project1.exe Read of adres 00d247b0"

> > form1.Edit1.Text возращает на 1 символ больше (символ
> конца строки).
> Не верю. Что в нем есть, то и возвращает.

Это когда эта строка находиться в ДЛЛ.... и пото заноситься в Richedit.

PChar(form1.Edit1.Text)
вот что этот код возращает (еще раз повторюсь, что этот код стоит  в ДЛЛ)
asdf\x14


Desdechado   (2006-03-09 21:23:00) [32]

какая-то непоследовательность:
> Возникает ошибка.
текст ошибки

> form1.Edit1.Text возращает на 1 символ больше (символ конца строки).
Не верю. Что в нем есть, то и возвращает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо