Вопрос № 55810: 1) Проблема: есть текстовый файл, допустим E:f1.odr, к нему нужно применить простейший криптоалгоритм (типа inc(i), просто чтобы народ не лазил ;)) и сохранить в E:f2.odr. Мои попытки см. в приложении. Сам вижу что криво, подскажите как лучше оформ...Вопрос № 55817: Вопрос к тем, кто понимает в ООП.. Написал я свой класс к стандартной кнопке..(листинг ниже..). а оно не не работает.. В чем дело?...Вопрос
№ 55824: Здравствуйте, уважаемые эксперты! Я пытаюсь закрыть консольное приложение, запущенное с помощью shellexecute().
Переменная ExeP хранит абсолютный путь до файла этого приложения, который и является заголовком его окна. Подскажите, пожалуйста, поч...Вопрос № 55857: Здравствуйте, уважаемые эксперты!
Проблема: есть компонент - редактор сложных графов, как свойства - две коллекции, Nodes и Links. С первой проблем нет: выводится на канвас, быстро, кликабельно и драгабельно :). Вторая: для создания линка делаю ...Вопрос № 55904: Здравствуйте, уважаемые эксперты! Нужна ваша помощь. Объясните, пожалуйста, смысл каждой строчки данного кода(в приложении). Если можно, то уточните, пожалуйста, значения аргументов. И подскажите, пожно ли как-нибудь сделать аналогичное,
но так, чтоб...
Вопрос № 55.810
1) Проблема: есть текстовый файл, допустим E:f1.odr, к нему нужно применить простейший криптоалгоритм (типа inc(i), просто чтобы народ не лазил ;)) и сохранить в E:f2.odr. Мои попытки см. в приложении. Сам вижу что криво, подскажите как лучше оформить алгоритм.
З.Ы. пробовал задавать массив через 'array of aray of', возвращает глюк в TMasFile[j+1,i+1]:=TFileStr[i] ?
З.Ы.Ы. если грузить через динамический массив, то как определить кол-во строк в файле? Задать цикл на поиск eoln?
2) Сильно надоел стандартный виндовый поисковик Ф3, нужно что-нибуть своё. Подкинте, плз, линк на сорцы. (Хочется посмотреть что люди наваяли, перед тем как самому лезть)
Приложение:
Отправлен: 18.09.2006, 11:02
Вопрос задал: Keraberas (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: sir henry
Здравствуйте, Keraberas!
1) В приложении простой пример для примитивного алгоритма шифрования с помощью XOR. Принцип в следующем: каждый символ в файле с помощью операции XOR шифруется с каким-либо ключом. Чтобы его расшифровать, надо опять побуквенно сделать XOR с тем-же ключом.
Алгоритм очень прост, поэтому работает очень быстро.
Приложение:
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 18.09.2006, 12:02
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Keraberas!
sir_henry прав - шифрование XOR-ом куда лучше, чем шифрование простым инкрементом. Оно, конечно, считается, самым примитивным, но как раз от совсем "левых" людей, которые не разбираются, защищает. Особенно, если вы будете шифровать не постоянным числом, а скажем, n-ый байт числом 13^n mod 256 (оно же 13^n and 255).
Тем более, что с инкрементом может быть переполнение и какой-дь глюк, т.к. 'я' в win-cp1251 имеет код 255. И встречается эта буква не так уж и редко. В обычных текстах, конечно.
Почему размеры массива именно 256x256 ? Использовать массивы постоянной длинны, кроме как для буфферов - плохо. Но у вас явно делается нечто другое.
Либо я вообще не понял, как работает шифрование.
Правда, при таком шифровании (XOR) слетят нафиг все переносы строк и надо открывать файл и читать побайтово, дешифровывать, а потом либо через буфер, либо еще как-дь (но чтобы не копировать область памяти с расшифрованным текстом) переносить куда надо.
Отвечает: Татьяна
Здравствуйте, Prosto_Blackhowk!
Конечно он у вас не будет работать - вы же не создали ни один объект этого класса.
В приложении динамически создается объект вашего класса. Определяется его расположение и определяется событие onclick
Приложение:
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Практикант)
Ответ отправлен: 18.09.2006, 11:35 Оценка за ответ: 5 Комментарий оценки: спасибо, этого я как раз и не знал..
Вопрос № 55.824
Здравствуйте, уважаемые эксперты! Я пытаюсь закрыть консольное приложение, запущенное с помощью shellexecute().
Переменная ExeP хранит абсолютный путь до файла этого приложения, который и является заголовком его окна. Подскажите, пожалуйста, почему FindWindow не находит окно этого приложения?
Заранее благодарен!
Отвечает: Melamed
Здравствуйте, Андрющенко Вячеслав Васильевич!
Так как консольное приложение не имеет цикла обработки сообщений, то Ваш код не будет в
принцыпе работать.
Если Вы имеете идентификатор задачи на этот процесс, то вы можете просто убить (остановить)
процесс, используя API функцию TerminateThread.
Приложение:
Ответ отправил: Melamed (статус: 5-ый класс)
Ответ отправлен: 18.09.2006, 12:45
Советую Вам просто разбивать более сложную задачу на более простые:
procedure TForm1.Button1Click(Sender: TObject); var t:hwnd; begin
t:=FindWindow(nil, PChar('c:1Project2.exe')); //находим хендл нужного окна
ShowMessage(inttostr(t)); //проверяем чего мы нашли, если 0 (ноль) то окно не найдено
postmessage(t, WM_CLOSE,0,0); //закрываем окно end;
Обращаю Ваше внимание что я использую константу WM_CLOSE вместо той которую использовали Вы (WM_QUIT), возможно из-за нее у Вас и не получается закрыть окно... (а у меня окно закрывается).
Удачи!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 18.09.2006, 12:52 Оценка за ответ: 5
попробуй слэш / - может поможет D:/Pr/test/Project2.exe
а может в findwindow(nil, PChar(ExeP)), wm_quit,0,0) второй параметр не такой.
Ответ отправил: Chizz (статус: 2-ой класс)
Ответ отправлен: 19.09.2006, 14:17 Оценка за ответ: 4
Вопрос № 55.857
Здравствуйте, уважаемые эксперты!
Проблема: есть компонент - редактор сложных графов, как свойства - две коллекции, Nodes и Links. С первой проблем нет: выводится на канвас, быстро, кликабельно и драгабельно :). Вторая: для создания линка делаю так:
with Links.Add do
begin
LBegin := Nodes[i]; // начало линка
LEnd := Nodes[j]; // конец
end;
И получаю объект-линк с адресами конечных нодов. Все проходит.
При попытке переопределить Add следуюшим образом:
function TLinks.Add(LBegin, LEnd: TNode): TLink;
var
NewLink: TLink;
begin
NewLink := TLink(inherited Add);
with NewLink do
begin
FLBegin := LBegin;
FLEnd := LEnd;
end;
Result := NewLink;
end;
вылетает сообщение об ошибке Access violation. В чем фишка?
Отправлен: 18.09.2006, 16:19
Вопрос задал: Joncory (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Joncory!
"Рыба - это к беременности. Хотя, конечно, смотря какая рыба. Может быть, карп, может быть, лещ... но все равно, рыба - это к беременности."
100% не могу гарантировать, но Access violation - это обращение по указателю к невыделенной памяти. Т.е. вы обращаетесь к какой-то переменной не инициализировав ее. В приложении то, как следует исправить, чтобы заработало.
А вообще, на будущее, я бы вам посоветовал ставить breakpoint-ы, трассировать программу и смотреть, где это вылазит.
Выяснили на какой строчке вылетело - смотрите, какие в ней используются переменные и ищете вверх по коду, что не инициализированно или, где за границы массива выходит. Или даже останавливаете программу прям перед этой строчкой и смотрите, значения всех используемых в "проблемной" строке переменных (Ctrl+F5). А потом уже выяснете и разбираетесь в коде - почему не инициализированно.
Здравствуйте, уважаемые эксперты! Нужна ваша помощь. Объясните, пожалуйста, смысл каждой строчки данного кода(в приложении). Если можно, то уточните, пожалуйста, значения аргументов. И подскажите, пожно ли как-нибудь сделать аналогичное, но так, чтобы форма запускаемого приложения не показывалась? Заранее очень благодарен!
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Андрющенко Вячеслав Васильевич!
Я в приложении написал буквально по каждой строчке. А вообще-то в MSDN все написано. Учитесь искать информацию сами.
Приложение:
--------- Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 19.09.2006, 02:40 Оценка за ответ: 5
Createprocess - порождает процесс, в данном случае запускает программу звукозаписи
Waitforsingleobject - приостанов выполнения программы до завершения дочернего процесса или заданного интервала времени, в данном случае infinite - бесконечно.
Чтобы форма не показывалась и можно сделать напрмиер консольное приложение и не исользовать Waitforsingleobject, если программа кроме запуска другой программы звукозаписи ничего не делает. чтобы не видно было самой рограммы звукозаписи можно:
1/ Поставить параметр wShowWindow := 0 (не пробовал)
2/ Послать окну SoundRec сообщение WM_HIDE следующим образом: SendMessage(FindWindow('SoundRec','Звук - Звукозапись',WM_HIDE,0,0));
Приложение:
--------- В будущем определено одно - неопределенность будущего!
Ответ отправил: Arvist (статус: 2-ой класс)
Ответ отправлен: 19.09.2006, 10:59 Оценка за ответ: 5