Code: procedure TForm1.Button2Click(Sender: TObject); var TS : TStringList; i: integer; s: string; begin if OpenDialog1.Execute then [COLOR=Red]begin[/COLOR] TS := TStringList.Create; TS.LoadFromFile(OpenDialog1.FileName); TS.IndexOf('[3]'); Pos('0=', TS.Strings[i]); Listbox1.Items.Add(s); [COLOR=Red]end;[/COLOR] end;
А блин точно, пропустил кое что Code: Listbox1.Items.Add(s); Ну а в переменной s ниче ж нету! Если несправишся то расскажи собственно что программа должна делать?
так рассказывал вроде выше. имеем файл .txt с содержанием- [3] 0=34534D9304 задача получить значение 34534D9304 в листбоксе
Блин ну вы жжоте Code: procedure TForm1.Button1Click(Sender: TObject); var TS : TStringList; i: integer; begin if OpenDialog1.Execute then begin TS := TStringList.Create; TS.LoadFromFile(OpenDialog1.FileName); i:=TS.IndexOf('[3]'); Listbox1.Items.Add(TS[i+1]); end; end; Так тебе нужно? Мобилка ты вообще делфи хоть чуть-чуть знаешь? Такое ощущение что ты его первый раз видишь. Мне не жалко накодить готовое, но ты должен сам учиться!
=Zeus= почти так. код выводит стороку 0=34534D9304 а нужно без 0= т.е 34534D9304 так я же и учу потихоньку
У тебя во всех строках будет "0="? Если да то просто поменяй Code: Listbox1.Items.Add( Copy(TS[i+1], 3, length(TS[i+1]) ) ); Это значит что мы добавим строку с 3-его символа до последнего. то есть без первых двух символов "0=". Фактически нам не важно, какие будут первые 2 символа. ... Блин, тут экстрасенсов нету. Я на твой вопрос ответил. Ты сказал что тебе нужно, я написал код. Я спать. Шайтанама, дружище, выучи сначала основы, а потом проси других. Ты ведь элементарного не можешь, а хочешь чтоб за тебя другие делали.
нет не во всех. и если в файле нет блока [3] то выбирается первый почему то. а желательно что бы посылалось сообщение в листбокс - block 3 not found
Как выше говорилось - курите библиотеку IniFiles Типичное строение для инишника и делается все на много проще и приятней... В Uses дописываем IniFiles и кнопочка: Code: procedure TForm1.Button1Click(Sender: TObject); var blocks:TStringList; ini:TIniFile; i:integer; s:string; begin blocks:=TStringList.Create; ini:=TIniFile.Create('.\file.txt'); //связываем переменную с файлом ini.ReadSections(blocks); //считываем в стринглист все "блоки" blocks.Sort; // обязательно для поиска по стринглисту if blocks.Find('3',i) then //ищем "блок" [3] - без скобок begin s:=ini.ReadString('3','0','Значение 0 не найдено'); ListBox1.Items.Add(s); //запивывает значение если найдено, если нет верхнюю фразу end else ListBox1.Items.Add('Block 3 not found'); //ну и это если сам блок не найден end; Все другие операции так же можно реализовать в пару строк а не делать "обрезание" по символу = или скобкам
Блин ребят уже запарился с этой штукой. инди 10. как в мемо вывести нормальный текст а не типа такого "?iaaen.Aaiuae"
Вот попрос о работе с idhttp. Вообщем делаю брут. Все брутит хорошо но иногда выкидывает ошибку Timeout. Я прописал ReadTimeout:=30000. Долго брутило все було хорошо но потом выкинуло ошибку Error ReadTimeout Как сделать что бы если врямя таймаута вышло прога повторяла запрос а не выдовала ошибку. дупустим http1.readtimeout:=30000; http1.get('sait.com'); если мы не получили ответ то заного пытаемся выполнить http1.get('sait.com');
Freedom, в свое время писал функцию: Code: function httpget (http : tidhttp; adr : widestring) : widestring; var str : tstringstream; begin str := tstringstream.Create(''); try http.Get (adr, str); except end; Result := str.DataString; str.Free; end; Вызов - s := httpget (http, 'http://vkontakte.ru'); Но советую вам на юникодную delphi пересесть - проблем знать не будете.
У меня вопрос по прехвату api функций, использовал эту статью http://www.xakep.ru/post/22263/default.asp Вызываю замену апи функции на свою(в инжектируемой библиотеке) InterceptDllCall(hInstance, 'user32.dll', 'MessageBoxA',Pointer(@MyMessageBox), nil, Pointer(myProc)); Вот описание, что бы было понятней Code: function InterceptDLLCall(hLocalModule: HModule; c_szDllName, c_szApiName:PChar; pApiNew, pApiToChange: Pointer; var p_pApiOrg: Pointer): boolean; hLocalModule: HModule; – модуль в котором находиться Import Table c_szDllName:PChar; – имя DLL, в которой находиться перехватываемая функция c_szApiName:PChar; – имя перехватываемой функции pApiNew: Pointer; – указатель на нашу функцию, которая будет вызываться вместо перехватываемой. pApiToChange: Pointer; – указатель на перехватываемую функцию, если равно nil, то адрес функции определяется через c_szDllName и c_szApiName. p_pApiOrg: Pointer; – указатель на старую перехватываемую функцию но проблема вот в чём, замена функции работает только в инжектируемой библиотеке, а не в самом приложении куда я её инжектирую. Даю гарантию это из за hLocalModule так как hInstance - дескриптор текущего экземпляра приложения, которым является инжектируемая библиотека а не само приложение. Так как же мне узнать HModule этого приложения?
Возьми Memo, задай цвет, отключи полосы прокрутки (ScrollBars := ssNone), укажи выравнивание по правому краю (Alignment := taRightJustify).
Code: s:=ini.ReadString('3','0','Значение 0 не найдено'); Вот здесь считывается из блока [3] строка соответствующая "0=". 0 в данном случае является именем сохраненной строки, = - просто разделитель. Поэтому никакого "обрезания" после считывания делать не приходится.
PHP: begin if OpenDialog1.Execute then begin blocks:=TStringList.Create; ini:=TIniFile.Create(OpenDialog1.FileName); ini.ReadSections(blocks); blocks.Sort; if blocks.Find('3',i) then begin s:=ini.ReadString('3','0','Çíà÷åíèå 0 íå íàéäåíî'); end else ListBox1.Items.Add('Block 3 not found'); begin for i:=1 to length(s) do if copy(s,i,1)='0' then continue else break; temp:=copy(s,i,length(s)-i+1); ListBox1.Items.Add(temp); end; end; end; вот придумали но работать не хочет. все. поправили этот код выдает обрезок строки вида 01234567. теперь задача что бы выдавалось не по порядку а в такой последовательности- 67452301. господа помогите. такую беду и в гугле не сьискать