Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Char & Error   Найти похожие ветки 

 
NiceSC   (2004-06-23 01:53) [0]

type
  SetOfChars = Set of Char;
var
setChar:setofchars;
begin
...
setChar:=[ #10..#13]; // строкаС
...
Если не убрать строкуС, то при выходе из основной процедуры возникает ошибка и программа падает???


 
Alex44   (2004-06-23 11:27) [1]

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"?


 
savva ©   (2004-06-23 12:57) [2]

вообще то я не знаю что написанное вами означает, потому как описав множество Set of Char вы описали тип, возможными которого могут быть значения с #0 до #255.
И если  строкой setChar:=[ #10..#13]; Вы хотите добавить в переменную типа SetOfChars 3 значения, то я советую Вам использовать для этого операции вида
setChar := [];
setChar := setChar + [ #10];

или же проседуру Include (она вроде более эффективна).

Маленький кусочек из F1.
Exclude procedure
Removes an element from a set.

Include procedure
Adds an element to a set.


 
Gandalf ©   (2004-06-23 23:58) [3]

кода мало


 
nicesc   (2004-06-24 15:02) [4]

Вот докопался, при попытке освободить память, вываливается Error
FreeMem(strTemp,SizeOf(strTemp)-1);
Это строка типа PChar которая динамически уменьшается в процессе...
Память выделял Так: GetMem(strTemp,StrLen(strWork));


 
SPeller ©   (2004-06-24 20:22) [5]

Не надо ничего уменьшать. Один раз выделил по максимуму и используешь. А когда не надо — просто FreeMem( strTemp );


 
nicesc   (2004-06-24 23:22) [6]

Пробовал и так, пишет Runtime error 204 at 0040244C


 
nicesc   (2004-06-25 00:36) [7]

Решил проблему (спасибо ZX)
делать надо так:


var
 p:pointer;
 strTemp:PChar;
begin
 GetMem(P,strLen);
 strTemp:=PChar(p);
...
...
 FreeMem(P)


Почему такие проблемы с PCHAR???
У меня не работает даже такой код:
Getmem(MyStr,10);
Freemem(MyStr); // -> RunTime error 204


 
Gandalf ©   (2004-06-25 21:15) [8]

Либо у меня браузер глючит, либо что. У тебя код в кустах... если ты выделил 10 байт и работаешь с 1000 то у тебя точно будут проблемы. По коду не ясно...


 
nicesc   (2004-06-25 21:45) [9]

Да я для примера привёл!

Ну например создаю проект, новый
и выделяю память и тут же её высвобождаю:
begin
 Getmem(MyStr,10);
 Freemem(MyStr) // RunTime
end;
Проверьте именно на PChar!
Кол 1.85
с заменой system


 
Gandalf ©   (2004-06-25 22:03) [10]

У меня все гуд. KOL 1.91 Delphi 7 WinXP SP1 RUS
А все же мне Freemem(MyStr,10); больше по вкусу.


 
nicesc   (2004-06-25 23:34) [11]

Gandalf
Всё парни приношу свои извенения, разобрался, уки кривые, не давала освободить правильно память команда:
StrTemp:=@StrTemp[iTag];


 
SPeller ©   (2004-06-26 07:08) [12]

Ну вот видишь. Никогда не теряй указатели на память, потом освобождать ведб надо. А вот на счет выделения - так я по полтора гигабайта выделял GetMem"ом, чтобы создать нехватку памяти и сброс остальных прог в своп. Но это уже оффтопик :)



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
3-1104240741
Aleksandr.
2004-12-28 16:32
2005.01.30
Киньте ссылкой на dll типа локального fireBird!


1-1105979185
Arm79
2005-01-17 19:26
2005.01.30
вопрос по синтаксису Object Pascal


3-1104085944
Vir
2004-12-26 21:32
2005.01.30
TADOQuery обновление


1-1105868929
Ivolg
2005-01-16 12:48
2005.01.30
Компонент


6-1100090278
prohorov
2004-11-10 15:37
2005.01.30
Как создать на Delphi то, что можно создать JBuilder ом ?