Примерно так: Code: var s,temp: String; links:array of String; i: integer; begin s:=' <option value="avtoinst">avtoinstruktor.in.ua (avtoinst)</option><option value="avtostek">avtosteklo.kh.ua (avtostek)</option> '; temp:=s; While pos('option value=',temp)>0 do begin SetLength(links,length(links)+1); links[length(links)-1]:=copy(temp,pos('>',temp)+1,length(temp)); links[length(links)-1]:=copy(links[length(links)-1],1,pos(' ',links[length(links)-1])-1); delete(temp,1,Pos('</option>',temp)+length('</option>')); end; for i:=0 to length(links)-1 do ShowMessage('link #'+IntToStr(i)+' = '+links[i]); end; Temp - временная переменная, нужна только для того, чтобы не испортить исходный текст. i - нужна только для перечисления.
Попросил друга написать небольшую утилитку для запуска такой штуки как BOA Soft PostInstaller с нужными мне параметрами. Получилось вот что: Code: program CMD; {$R 'run.res' 'run.rc'} uses Forms, Windows, SysUtils; begin WinExec(pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"'),SW_HIDE); end. Проблема в том, что под XP код шикарно работает, а под Vista/7 запускается только если установить режим совместимости с XP. Поскольку софт должен распространяется дальше, это не вариант. Можно ли в самом коде программы указать режим совместимости с XP и, например, запрос прав админа? Спасибо )
Разбей с помощью TStringList например, чтобы велосипед не писать PHP: var list: TStringList; begin list := TStringList.Create; list.Delimiter := ';'; list.DelimitedText := '12;13;161;333;1,623,67;42;4'; AllocConsole; for I := 0 to List.Count - 1 do Writeln(list[i]); Readln; list.Free; end; В результате в list[0] - 12, list[1] - 13 и т.д.
Пусть в Str уже находиться этот текст. Code: var Str: String; i: Integer; arr: array[1..10] of Real; begin i := 1; while Str <> '' do begin if pos(#13#10, Str) = 1 then begin Delete(Str, 1, 2); Continue; end; arr[i] := StrToFloat(copy(Str, 1, pos(';', Str) - 1)); inc(i); end; end; Считать строку из файла можно так: Code: var F: TextFile; Str, Str2: String; begin AssingFile(F, 'имя файла'); Reset(F); Str := ''; while not EOF(F) do begin Readln(F, Str2); Str := Str + Str2; end; Close(F); end;
Попробуй так: Code: var ExecInfo: TShellExecuteInfo; begin FillChar(ExecInfo, SizeOf(ExecInfo), 0) ; with ExecInfo do begin cbSize := SizeOf(TShellExecuteInfo) ; lpClass:='.exe'; lpVerb:='runas'; fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_CLASSNAME; Wnd := Application.Handle; lpFile := PChar(ExeFile) ; lpDirectory := PChar(ExtractFilePath(ExeFile)) ; nShow := SW_SHOWNORMAL; end; ShellExecuteEx(@ExecInfo); ExeFile - запускаемый экзешник
Помогите спарсить параметр из исходного кода. PHP: <script type="text/javascript"> vukuView('video', 28765, '15a1d34170a76fd3b1fbd85f5e8d7cab0fbf5996'); PHP: begin idhttp1.HandleRedirects:=true; StrPage:=idhttp1.Get('http://blablablai.ru/'); Data:=TstringList.Create; Data.Add('st.posted=ВСТАВИТЬ СЮДА'); Data.Add('st.email='+Edit1.Text); Data.Add('st.password='+Edit2.Text); Data.Add('button_go=Войти'); StrPage:=idhttp1.Post(Data); if Pos('Logoff', StrPage)<>0 then Label3.Caption:='Вошли' else Label3.Caption:='не зашли'; Data.Free; end; т.е. 15a1d34170a76fd3b1fbd85f5e8d7cab0fbf5996 подставить в пареметр 'st.posted
Если ZZZ мало, то у вас идёт обращение по ссылке равной nil. Другими словами - объект не создан, а ты уже к нему обращаешься. Подробнее - читай статью
Code: temp:='<script type="text/javascript">'#13#10+'vukuView(''video'', 28765, ''15a1d34170a76fd3b1fbd85f5e8d7cab0fbf5996''); '; param:=copy(temp,pos(', ''',temp)+length(', '''),pos(''');',temp) - (pos(', ''',temp)+length(', '''))); Одна строчка, первая - это присваивание. Двойные кавычки - экранирование делфи. Чтобы было понятней - копируем откуда есть в куда надо с позиции запятой_пробел_кавычки (это все в кавычках - синтаксис делфи) по позицию кавычки скобочки точки с запятой минус начальная позиция.
Скажите почему не работает? Паскаль BEGIN Write('Начали!'); Write( 8+1) ; Write( 5-2) END. Извеняюсь это моя вина была в readln BEGIN Write('Начали!'); Write(8+1); Write(5-2); readln END.
Artist, ты не понял, мне нужно получить количество установленных физических жестких дисков, а не логических разделов на всех HDD, читай внимательнее)
Мне нужно например взять одну страницу в сети, спарсить с нее параметры и вывести. Как лучше сделать, скачать на жестяк страницу и парсить её на компе или на лету?
NemeZz, спасибо, но как я понял нет ничего, кроме как пробовать открывать в цикле hdd, сделал так: Code: function GetHardCount: Integer; var hDevice: THandle; begin Result:= 0; while True do begin hDevice:= CreateFile(PChar('\\.\\PhysicalDrive' + IntToStr(Result)), 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if hDevice = INVALID_HANDLE_VALUE then Break else try Inc(Result); finally CloseHandle(hDevice); end; end; end;
можете подсказать как мне сделать службу (сервис) на чтоб при ее старте еще и вылазило окно (Form) и все на виндовс 7 ..... я почитал что в семерке незапустить интерактивные службы =\ тоесть как работать мне с рабочим столом и выводить форму... ?