Суббота, 26.05.2012, 00:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 1 из 212»
Модератор форума: Vinchensoo 
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » out of memory
out of memory
kvestproДата: Воскресенье, 22.01.2012, 14:10 | Сообщение # 1
почетный гость
Сообщений: 72
Сейчас нет на сайте
Я создал простенький шифратор/дешифратор текста. (по уроку)

Проверяю его, ввожу туда текст на 7 строк.
жму зашифровать
а он мне пишет out of memory.
у меня 4 ядра 3.2 ггц и 8 гб оперативки.
Сколько же жрет этот шифратор?
P.S. писал на borland delphi 7
 
LunarPixelДата: Воскресенье, 22.01.2012, 14:13 | Сообщение # 2
старожил
Сообщений: 2707
Сейчас нет на сайте
kvestpro, мм.. проблема возможно в том, что у тебя строка записывается в переменную строкового типа, длина которой ограничена 255 символами. smile

Набор в команду по развитию сайта GiGatun.ru

Уроки по GM от LunarPixel

Мой сайт "Лунный Пиксель"
 
kvestproДата: Воскресенье, 22.01.2012, 14:16 | Сообщение # 3
почетный гость
Сообщений: 72
Сейчас нет на сайте
LunarPixel, скорее всего!
спасибо.
то есть эта переменная не должна быть string?
 
LunarPixelДата: Воскресенье, 22.01.2012, 14:24 | Сообщение # 4
старожил
Сообщений: 2707
Сейчас нет на сайте
Quote (kvestpro)
то есть эта переменная не должна быть string?

Да, используй другой тип данных, большей размерности, например widestring.

Набор в команду по развитию сайта GiGatun.ru

Уроки по GM от LunarPixel

Мой сайт "Лунный Пиксель"
 
TimKruzДата: Воскресенье, 22.01.2012, 15:12 | Сообщение # 5
старожил
Сообщений: 1588
Сейчас нет на сайте
LunarPixel, в Delphi 7, теоретически, обычный string может помещать гораздо больше 255 символов (если не указана конкретная длина)... У меня получалось запихивать туда огромные тексты... Другое дело, что "лишнее" выходит за пределы отведённой строке памяти и обращаться к вышедшим туда символам напрямую (по номеру) нельзя, но они там есть и хранятся там сколько угодно долго... А вот в консоли ты больше 255 символов сразу ввести не сможешь.
Вот пример для доказательства:
Code
var
   s:string;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
   s:=memo1.Text;
   showmessage(s);
end;

Введите в Memo текст любой длины и получите его назад через окошко-сообщение.
Так что, тут скорей всего ошибка в самом алгоритме шифрования. Покажи весь код тут (тег [code]).
А сколько жрёт шифратор можешь увидеть через диспетчер задач.
В принципе, переполнение памяти может быть, если приложение забивает всю память, отведённую системой под это приложение, что по умолчанию меньше реальной памяти (вот сколько конкретно - не знаю).

 
AirWolF_RGДата: Воскресенье, 22.01.2012, 15:22 | Сообщение # 6
почетный гость
Сообщений: 113
Сейчас нет на сайте
TimKruz,
соглашусь с тобой. В Delрhi 7 string понимается как ansi string, тоесть может содержать в себе текста столько, сколько доступно ОЗУ, насколько я помню.
kvestpro,
а с твоей проблемой могу связать такой случай: т.к. у тебя 8 Gb озу, у тебя стабильно x64 ОСь. А Дельфин очень сильно не дружит с x64 осями. Для этого лучше юзать последние релизы Embarcaderro или как его там, если ты любитель Delphi.


C(4),C++(3),PHP(2),BlitzMAX(5),Delphi(4),VB(4)
Оценка знаний - от 1 до 5
 
LunarPixelДата: Воскресенье, 22.01.2012, 15:31 | Сообщение # 7
старожил
Сообщений: 2707
Сейчас нет на сайте
TimKruz, да, ты прав, для меня делфи последнее время - это консоль. biggrin

Набор в команду по развитию сайта GiGatun.ru

Уроки по GM от LunarPixel

Мой сайт "Лунный Пиксель"
 
kvestproДата: Воскресенье, 22.01.2012, 18:34 | Сообщение # 8
почетный гость
Сообщений: 72
Сейчас нет на сайте
AirWolF_RG, хм... я не так выразился
у меня железо 8 гб, но из-за того что у меня x32 то виндовс видет только 3 с чем-то
 
TimKruzДата: Воскресенье, 22.01.2012, 18:56 | Сообщение # 9
старожил
Сообщений: 1588
Сейчас нет на сайте
kvestpro, ну так выложи здесь свой код!!! Мы тут не экстрасенсы... Вот по коду будет ясно, что с ним... Или хотя бы протестировать на другой машине можно будет...

 
kvestproДата: Воскресенье, 22.01.2012, 20:06 | Сообщение # 10
почетный гость
Сообщений: 72
Сейчас нет на сайте
http://narod.ru/disk/38504332001/%D0%B0%D0%B0%D0%B0.rar.html - здесь исходник и экзешник.
 
masb8ly-GCДата: Воскресенье, 22.01.2012, 23:56 | Сообщение # 11
участник
Сообщений: 156
Сейчас нет на сайте
Quote (kvestpro)
AirWolF_RG, хм... я не так выразился у меня железо 8 гб, но из-за того что у меня x32 то виндовс видет только 3 с чем-то

Можно вопрос? ЗАЧЕМ?!
Смысл ставить еще 1 планку которая не используется? Поставь х64 и не парься! У меня стоит х64 и все нормально, с Delphi не конфликтует!

Добавлено (22.01.2012, 23:56)
---------------------------------------------
Не знаю, что у тебя там пишет, но у меня все работает! Запускал и с исходника и с ехе'шника...
Железо:
Intel Core i7 - 990x Extreme Edition, 6 ядер 3.4 ГГц и 8 гб оперативки.
Да железо конечно не для сравнения, но даже на самой слабой машине полет сего приложения должен быть нормальным!

Добавлено (22.01.2012, 23:56)
---------------------------------------------
Твое приложение кушает всего 960 кб оперативки!


 
kvestproДата: Понедельник, 23.01.2012, 12:20 | Сообщение # 12
почетный гость
Сообщений: 72
Сейчас нет на сайте
masb8ly-GC, вы пробовали вставлять большой текст?
а насчет x64
когда мне компьютер собирали, то этот сборщик (у меня дома все делали)
забыл 7 виндовс у себя дома. а с собой был толь XP x32.
жду его пока он мне принесет виндовс 7.
он мне обещал бесплатно сделать его.

Добавлено (23.01.2012, 12:18)
---------------------------------------------
максимум почему-то 114 символов (с пробелами)
вышло на 2 строки.
пишет вот что:
access violation at address 00402C8D in module 'Project2.exe'. Read of address 3FFFFFFc.

Добавлено (23.01.2012, 12:20)
---------------------------------------------
перевел в гугле (в школе французский учу)
вот что выдал:
нарушение прав доступа по адресу 00402C8D в «Project2.exe 'модуль. Чтение адреса 3FFFFFFc.
что это значит?

Сообщение отредактировал kvestpro - Понедельник, 23.01.2012, 09:28
 
masb8ly-GCДата: Понедельник, 23.01.2012, 16:46 | Сообщение # 13
участник
Сообщений: 156
Сейчас нет на сайте
Все дело в том, что изначально на приложения делфи открыто не много память (не помню сколько) как открыть не знаю. В момент работы с текстом размером в 1074 символа твое приложение использовало 277 мб оперативки, а после выдало сообщение "Out of memory"

 
TimKruzДата: Понедельник, 23.01.2012, 18:17 | Сообщение # 14
старожил
Сообщений: 1588
Сейчас нет на сайте
Quote (kvestpro)
http://narod.ru/disk/38504332001/%D0%B0%D0%B0%D0%B0.rar.html - здесь исходник и экзешник.

К сожалению, почему-то сейчас не могу скачать с народа... sad Но видно, что с алгоритмом что-то не то. Нерациональный. Скорей всего, он и не предназначен для таких больших сообщений... В том уроке ничего не было написано на счёт ограничений?

 
kvestproДата: Вторник, 24.01.2012, 20:37 | Сообщение # 15
почетный гость
Сообщений: 72
Сейчас нет на сайте
TimKruz, нет....
это видеоуроки Антона Макрушина.
http://rutracker.org/forum/viewtopic.php?t=2829387 (он их бесплатно сам выкладывает на рутрекере)

Добавлено (23.01.2012, 20:34)
---------------------------------------------
исправил out of memory...
но появилась другая:

Добавлено (24.01.2012, 20:37)
---------------------------------------------
выкладываю новый исходник
кстати новая ошибка (на скрине) раньше тоже была.
http://narod.ru/disk/38701117001/%D0%B0%D0%B0%D0%B0.zip.html

 
berzegovДата: Вторник, 24.01.2012, 20:55 | Сообщение # 16
участник
Сообщений: 166
Сейчас нет на сайте
Скачал твой исходник.У меня тоже такая же ошибка(access violation at address 00402C8D in module 'Project2.exe'. Read of address 3FFFFFFc.) после ~150-250 символов.

 
kvestproДата: Вторник, 24.01.2012, 21:10 | Сообщение # 17
почетный гость
Сообщений: 72
Сейчас нет на сайте
berzegov, Отчего же там такая ошибка?
есть мысли?
 
berzegovДата: Вторник, 24.01.2012, 21:51 | Сообщение # 18
участник
Сообщений: 166
Сейчас нет на сайте
Quote (kvestpro)
Отчего же там такая ошибка?


Если бы знал,то сказал. smile

 
karuyДата: Среда, 25.01.2012, 00:23 | Сообщение # 19
постоянный участник
Сообщений: 389
Сейчас на сайте
kvestpro, Учись трассировать прогу, пригодиться. Еррор вываливается из-за
Code
for b:=1 to h do
pass:=pass+pass;

ясно почему? Я алгоритм твой не менял, просто подправил, чтоб еррора не было. http://rghost.ru/36096142

++++++++++[>++++++++++>++++++++++>+++++++++++>++++++++++++>++++++++++++<<<<<-]>+++++++.>---.>++++.>---.>+.
Для замечаний по поводу грамотности есть репутация.
 
kvestproДата: Среда, 25.01.2012, 15:48 | Сообщение # 20
почетный гость
Сообщений: 72
Сейчас нет на сайте
karuy, Точка с запятой нужэна что ли?

Добавлено (25.01.2012, 15:48)
---------------------------------------------
karuy, все равно ошибка

 
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » out of memory
Страница 1 из 212»
Поиск:

Все права сохранены. GcUp.ru © 2008-2012 Рейтинг