Подскажите код который бы искал в файле бла-бла.тхт строчку, вернее часть строки, найдя записывал её и следующую за ней в файл и продолжал искать дальше, найдя ещё одну записывал бы так же в результат.тхт с новой строчки и так далее пока не найдет все.И высший пилотаж, если в результат.тхт быдет записываться кол-во найденных пар-строк и время/дата поиска. Заранее спасибо
пробелы поставь правельно, выведи запрос в строку, в эдит какойто edit3.text := 'select * from userlist where firstName' + Edit1.Text + 'and lastName' + Edit2.Text; и глянь где пробелы непарвльно стоят, скорее всего в этом трабла. с тебя ящик пива
Криптование программного кода Всем здрасте! Вот такой вопрос, есть ли какойнить код с помощью которого можно зактиптовать полностью процедуру или функцию? Возможно ли закриптовать программный код в исходниках? P.s. Может конечно я не туда запостил, но ответ хотелось бы увидеть в виде кода, если таковой возможен.
ТАк, первый пост я вообще не в тему запостил ... не заметил что ты про програмный код, начал уже до перла распинаться ... одумался. Есть решения, в примеру ASProtect https://www.softactivation.com/asp/asprotect.asp Это как пример FLEX LM, HASP. Но это для теории, сломано уже все.
есть замечательная прога кот. шифрует только значение строковых переменных http://www.securitylab.ru/software/234296.php мне нада чтобы полностью процедуру и т.д.
мышиловка, отрава, ногой можно, об стену, еще вариант Code: procedure TForm1.Button1Click(Sender: TObject); var r: TRect; pr: PRect; begin r.Left := 0; r.Top := 0; r.Right := 0; r.Bottom := 0; pr := @r; ClipCursor(pr); end; ну еще Code: procedure TForm1.Button1Click(Sender: TObject); var CState: Integer; begin CState := ShowCursor(True); while Cstate >= 0 do Cstate := ShowCursor(False); end;
Вот он, но алго простой =) Code: { **** UBPFD *********** by kladovka.net.ru **** >> Шифрование исполняемого файла В данном примере реализована процедура шифрования и расшифрования одной только процедуры "вывода сообщения".Процедура изночально не зашифровано, что ни есть хорошо.Для того что бы процедура была при запуске программы уже зашифрована надо написать внешнюю программку,которая ба сканировала ехе-шник и находила определенные метки(начальную и конечную)и шифровала бы всё между ними.Таким образом вы получите готовый ехе-шник с уже зашифрованой(зашифроваными)процедурой. Для того чтоб некоторым умным людям (crackers)жить было не легко,после расшифровки и выполнения процедуры можно её опять зашифровать. Более потробную информацию читайте в статье на «Королевства Delphi» http://delphi.vitpc.com/mastering/safe/safe.htm Там же читайте Открытый проект "Анти крэковые мучения" http://delphi.vitpc.com/mastering/safe/index.htm Зависимости: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; Автор: DDA, Vologda Copyright: «Королевства Delphi» Защита от несанкционированного использования программ, написанных на Delphi Дата: 3 марта 2004 г. ********************************************** } unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Procedure metka1; //Начальная метка - нужна что бы находить потом в exe файле эти символы и знать //откуда начинать шифровать //Здесь метка представляет из себя десятичные числа от 0 до 256 через запятые //Если метка 50,60,70,80,90 то это соответствует символам 2<FPZ //Кстати, такого кол-во символов в метке может быть мало и лучше использовать больше //Т.к если программа большая то такие последовательности могут встретиться не один раз begin asm DB 50,60,70,80,90 //2<FPZ это метка начальная end; end; procedure TForm1.Button1Click(Sender: TObject); begin beep; ShowMessage('Период использования программы истёк!'); end; Procedure metka2; //Конечная метка - нужна чтобы знать до куда нужно шифровать в файле и //докуда расшифровывать в памяти begin asm DB 68,68,67,45,61 //DDA-= это метка конечная end; end; procedure TForm1.Button2Click(Sender: TObject); //Процедура Расшифрования(В даном примере и зашифрования) var ptrAddr: Pointer; {для Адреса процедуры вывода сообщения} dwOldProtect: DWORD; begin ptrAddr := @TForm1.Button1Click;//Получаем адрес процедуры вывода сообщения VirtualProtect(@TForm1.Button1Click, 2048, PAGE_READWRITE, @dwOldProtect); //2048 это размер в байтах с которыми можно работать(по моему) //Если процедура большая то нужно подбирать соответствующий размер while ptrAddr <> @metka2 do //шифрование(слабое) выполняем пока не дойдем то конечной метки begin Byte(ptrAddr^) := Byte(ptrAddr^) xor $41; //каждый байт в памяти ксорится с кодом 65'A'(к примеру) //Используйте более надёжные алгоритмы шифрования inc(Integer(ptrAddr)); end; exit; //нужно так сделать что б компилятор включил эти процедуры metka1;//в код,т.к Delphi не вставляет в результирующий код процедуры, metka2;//которые никогда не используются end; //Такое шифрование взято для примера и не рекомендуется для использования серьёзной защиты //Также рекомендуется использовать и проверочную контрольную сумму для проверки //целостности кода программы. //Теперь осталось только сделать отдельную программу которая искала бы //в этом exe файле начальную и конечную метки и шифровало бы всё между ними // //Но для демонстрации можно посмотреть результат и сейчас //Запустите программу и нажмите на кнопку 1 -Должно вывестись сообщение и звук.сигнал //А если нажать на кнопку 2 - то прцедура нажатия на кнопку 1 зашифруется //И если после этого нажать на кнопку 1 -то должно произойти что-то не предсказуемое //т.к процедура зашифрованна и что-то нормального вы не увидите. //Источник информации: CopyRight «Королевства Delphi» //"Защита от несанкционированного использования программ, написанных на Delphi" end.
МуСкул to XIII Code: procedure TForm2.Button2Click(Sender: TObject); var s:string; begin s:='select * from userlist where firstName="'+Edit3.Text+'" and lastName="'+Edit6.Text+'"'; ShowMessage(s); SimpleDataSet1.DataSet.CommandText:=s; SimpleDataSet1.DataSet.Active:=false; SimpleDataSet1.Active:=false; SimpleDataSet1.DataSet.Active:=true; SimpleDataSet1.Active:=true; if DataSource1.DataSet.RecordCount = 0 then begin ShowMessage('Такого Логина нету'); end else ShowMessage('OK'); end; Полностью рабочая процедурка под кнопку. У меня на локальной машине с Денвером все работает безотказно.
спасибо, я тоже нашел этот пример, но....... как написать эту "внешнюю программку"? Я задал такой вопрос в надежде может ктонить поделится своим опытом с меннее опытными.
Шифрования to cyber$nake. В последних сообщениях как говорится смешались в кучу кони й люди. Может я конечно что-то неправильно понял, но - Начну с шифрования исходников: в Делфи это бесполезная вещь. Если не хоч давать исходники не давай, давай сам екзешник. Применения шифрования к исходникам я видел лишь один раз - в фирме старый програмист позаменял название переменных и функций на случайные комбинации. С одной стороны все просто, но с другой - пришлось заново переписывать с нуля прогу ведь розобраться в исходниках стало нереально. Шифрование екзешников: Здесь проше и эфективнее будет использовать уже готовый продукт. Например тотже разрекламированый АспПротект последней версии или другой не очень известный. Если грамотно поставить эти крипторы, то этим задача крякеров осложняется в несколько раз, а для средняков и насчинающих это капец. В том же АспПротекте кажется можно указывать шифровать участки кода. И для последней версии в паблике нету автоматического расшифровщика.
1 - Виртуальная машина - VMProtect 2 - пакеры/крипторы/протекторы - DotFix FakeSigner 3 - имена функций типа FFFFx0 4 - Delphi String Protect прога защитит string-овые данные. думаю хватит... проблем с поиском софта не возникнет, поэтому не дал линков.
presidentua спасибо больше, тока вот оно выдаёт всю строку а как сделать чтобы отдельное поле только -- уже разобрался
Один из вариантов Code: if DataSource1.DataSet.RecordCount = 0 then begin ShowMessage('Такого Логина нету'); end else begin ShowMessage('OK'); ShowMessage(DBGrid1.Fields[1].AsString); end; выводит на экран Логин. А по сути, выводит 2 столбец из текущей строки, поскольку строка одна - то она всегда текущая.
а можно как в label вставить ? чтонить типа Label4.Caption:= 'DBGrid1.Fields[1].AsString'; ----- уже понял =) правельно Label4.Caption:= DBGrid1.Fields[1].AsString;