![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Char & Error
NiceSC © (2004-06-23 01:53:00)type
SetOfChars = Set of Char;
var
setChar:setofchars;
begin
...
setChar:=[ #10..#13]; // строкаС
...
Если не убрать строкуС, то при выходе из основной процедуры возникает ошибка и программа падает???
SPeller (2004-06-26 07:08:00) [1]Ну вот видишь. Никогда не теряй указатели на память, потом освобождать ведб надо. А вот на счет выделения - так я по полтора гигабайта выделял GetMem'ом, чтобы создать нехватку памяти и сброс остальных прог в своп. Но это уже оффтопик :)
nicesc (2004-06-25 23:34:00) [2]Gandalf
Всё парни приношу свои извенения, разобрался, уки кривые, не давала освободить правильно память команда:
StrTemp:=@StrTemp[iTag];
Gandalf (2004-06-25 22:03:00) [3]У меня все гуд. KOL 1.91 Delphi 7 WinXP SP1 RUS
А все же мне Freemem(MyStr,10); больше по вкусу.
nicesc (2004-06-25 21:45:00) [4]Да я для примера привёл!
Ну например создаю проект, новый
и выделяю память и тут же её высвобождаю:
begin
Getmem(MyStr,10);
Freemem(MyStr) // RunTime
end;
Проверьте именно на PChar!
Кол 1.85
с заменой system
Gandalf (2004-06-25 21:15:00) [5]Либо у меня браузер глючит, либо что. У тебя код в кустах... если ты выделил 10 байт и работаешь с 1000 то у тебя точно будут проблемы. По коду не ясно...
nicesc (2004-06-25 00:36:00) [6]Решил проблему (спасибо ZX)
делать надо так:
var
p:pointer;
strTemp:PChar;
begin
GetMem(P,strLen);
strTemp:=PChar(p);
...
...
FreeMem(P)
Почему такие проблемы с PCHAR???
У меня не работает даже такой код:
Getmem(MyStr,10);
Freemem(MyStr); // -> RunTime error 204
nicesc (2004-06-24 23:22:00) [7]Пробовал и так, пишет Runtime error 204 at 0040244C
SPeller (2004-06-24 20:22:00) [8]Не надо ничего уменьшать. Один раз выделил по максимуму и используешь. А когда не надо — просто FreeMem( strTemp );
nicesc (2004-06-24 15:02:00) [9]Вот докопался, при попытке освободить память, вываливается Error
FreeMem(strTemp,SizeOf(strTemp)-1);
Это строка типа PChar которая динамически уменьшается в процессе...
Память выделял Так: GetMem(strTemp,StrLen(strWork));
Gandalf (2004-06-23 23:58:00) [10]кода мало
savva (2004-06-23 12:57:00) [11]вообще то я не знаю что написанное вами означает, потому как описав множество Set of Charвы описали тип, возможными которого могут быть значения с #0 до #255.
И если строкойsetChar:=[ #10..#13];Вы хотите добавить в переменную типаSetOfChars3 значения, то я советую Вам использовать для этого операции вида
setChar := [];
setChar := setChar + [ #10];
или же проседуру Include (она вроде более эффективна).
Маленький кусочек из F1.
Excludeprocedure
Removes an element from a set.
Includeprocedure
Adds an element to a set.
Alex44 (2004-06-23 11:27:00) [12]Mozhno popodrobnee? setChar---eto ne stroka, a set (v dannom sluchae---prosto 256 bits = 32 bytes)! Mozhet, ne nuzhno pytat'sya ee k stroke privodit'?