Просмотр полной версии : [Delphi]/[Pascal] Задай вопрос, получи ответ
KaZ@NoVa
07.06.2009, 21:08
есть длл. длл загружается и запускает поток. этот поток использует глобальный массив. дак вот он его использует всё хорошо работает. дописываю строчку кода и этот массив становится недоступен. похоже это как то связано с размером процедуры потока. проблемму впринципе решил но интерестно в чом прикол был.
Я к сожалению в потоках особо не разобрался, но могу сказать если ты писал под билдером или делфой, скорее всего это результат ошибок этих сред, ну и потом, глобальные переменные это не лучшее решение и тем более массив.
Угу... есть такая трабла на Делфи
обычно спасаюсь глобальной переменной crit.. в кажом потоке:
if crit then sleep(10);
crit:=true;
// действия с глоб массивом
crit:=false;
Вообще такие вещи делаются через критические секции типа
var
CS:TRTLCriticalSection; // глобальная переменная
.......
при старте проги делаешь:
InitializeCriticalSection(CS);
.....
в потоках делаешь:
EnterCriticalSection(CS);
тут идут нужные действия.
LeaveCriticalSection(CS);
после выполнения EnterCriticalSection
система приостанавливает все потоки программы и выполняет код который идет далее.
Затем после LeaveCriticalSection система опять разрешает работу других потоков.
т.е. какбы синхронизация но на уровне ядра и просчитана более лучше.
Помогите сделать считывание матрицы из текстового файла в данной программе:
uses crt;
type
PtrStr = ^Str;
Str = array [1..1] of integer;
PtrMatr = ^Matr;
Matr = array [1..1] of PtrStr;
var
matrica: PtrMatr;
razmer, i, j: integer;
procedure CreateMatr;
begin
write ('razmernost matricy: ');
readln(razmer);
getmem(matrica, razmer*SizeOf(PtrStr));
for i:=1 to razmer do
getmem(matrica^[i], razmer*SizeOf(integer));
writeln('vvodim elementy:');
for i:=1 to razmer do
for j:=1 to razmer do
readln(matrica^[i]^[j]);
end;
procedure destroymatrix;
begin
for i:=1 to razmer do
freemem(matrica^[i], razmer*SizeOf(integer));
freemem(matrica, razmer*SizeOf(PtrStr));
end;
procedure otobrajenie;
begin
for i:=1 to razmer do
begin
writeln;
for j:=1 to razmer do
write(matrica^[i]^[j]:5);
end;
writeln;
end;
procedure sortirovka;
var buffer1, buffer2, buffer3: integer;
begin
buffer3:=1;
for i:=1 to razmer do
begin
buffer1:= matrica^[i]^[1];
buffer2:= matrica^[i]^[i];
for j:=0 to razmer-1 do
begin
if matrica^[i]^[j+1] <= buffer1 then
begin
buffer3:=j+1;
buffer1:=matrica^[i]^[j+1];
end;
matrica^[i]^[buffer3]:=buffer2;
matrica^[i]^[i]:=buffer1;
end;
end;
end;
begin
clrscr;
CreateMatr;
otobrajenie;
sortirovka;
otobrajenie;
destroymatrix;
readln;
end.
Agregat, предлагаешь тебе лабу сделать?
procedure CreateMatr;
var
F : text;
begin
write ('razmernost matricy: ');
readln(razmer);
assign(F,'README');
reset(F);
читаешь пока не eof(F) и записываешь в элемент матрицы
end;
Подскажите как в таком коде сделать чтоб было возможно вводить только целые числа больше 0
procedure TMainForm.Button1Click(Sender: TObject);
begin
if Length(Edit1.Text) = 0 then
begin
ShowMessage('Надо ввести состояние нового предмета');
exit;
end;
kachestvo1:=StrToInt(Edit1.Text);
if Length(Edit2.Text) = 0 then
begin
ShowMessage('Надо ввести состояние предмета по факту');
exit;
end;
kachestvo2:=StrToInt(Edit2.Text);
if Length(Edit3.Text) = 0 then
begin
ShowMessage('Надо ввести цену нового изделия');
exit;
end;
cenanovogo:=StrToInt(Edit3.Text);
if Length(Edit4.Text) = 0 then
begin
ShowMessage('Надо ввести размер комисcии');
exit;
end;
komissija:=StrToInt(Edit4.Text);
cenapokupki:=kachestvo1 / kachestvo2 * cenanovogo * (1-komissija/100);
Label6.Caption:=FloatToStr(cenapokupki);
cenaprodagi:=kachestvo1 / kachestvo2 * cenanovogo;
Label8.Caption:=FloatToStr(cenaprodagi);
end;
с меня +
=)
if Length(Edit1.Text) = 0 then
begin
ShowMessage(Надо ввести состояние нового предмета');
exit;
nd;
try
if strtoint(Edit1.Text)<=0 then
begin
ShowMessage('Надо ввести число больше 0');
Exit;
end;
except
ShowMessage('Надо ввести целое число!');
Exit;
end;
Нето немножко, необходимо чтоб вводились только цифры
cremator (c)
08.06.2009, 02:27
blednii, тебе всё правильно написали! Если будет введено не число то вылезет ошибка ShowMessage('Надо ввести целое число!');
Нето немножко, необходимо чтоб вводились только цифры
Понял что имеетсо =)
в евенте эдита:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key<'0') or (Key>'9') then Key:=chr(0);
end;
Чуть не забыл, держи с бекспейсом: if ((Key<'0') or (Key>'9')) and (ord(Key)<>8) then Key:=chr(0); :p
pascal нужно несколько задач простых
1) Написать программу, которая после введенного с клавиатуры числа (от 1 до 999) , обозначающего денежную еденицу, дописывает слово "рубль" в правильной форме. (Например 5 рублей, 21 рубль)
case a of
1, 21, 31, 41, 51, 61, 71, 81, 91: write ('рубль');
2..4, 22..24, 32..34, 42..44, 52..54, 62..64, 72..74, 82..84, 92..94: write ('рубля');
5..20, 25..30, 35..40, 45..50, 55..60, 65..70, 75..80, 85..90, 95..99: write ('рублей');
end;
вот придумал только так...но это нерационально очень..... и тем более до 999
2) Написать программу, которая вычисляет стоимость междугороднего телефонного разговора. Исходными данными являются код города и продолжительность разговора.
Вобще хз. Вот вся задача.
3) Составить программу нахождения произведения всех членов арифметической прогрессии от 10 до 30с шагом 1,15 . Любой член прогрессии находится по формуле a=a1+(n-1)d , где n- номер члена прогрессии , a1 - первый член прогрессии , d - шаг прогрессии.
4) Написать программу поиска первого из двух последовательных элементов в целочисленном массиве из 10 элементов , сумма которых минимальна.
За каждую +5 :) :rolleyes:
2 МongBa† забыл проверять еще на знак минуса )
Всем доброго времени суток =)
Ещё назрел вопросик -)
Есть приложени и web-страница на которой нужно пройти авторизацию чтобы поучить Инфо о сетевом балансе. Если прошла авторизация то программа должна отобразить состояние баланса...
Вот вопрос : Через что лучше реализовать и как примерно действовать ?
Всем спасибо за ранее =)
через wininet быстро и просто делается. Удобство в том, что поддержка SSL.
А некоторые сайты какраз и юзаеют SSL при авторизации.
Я уж за Indy Взялся хотел через HTTP реализовать, но что то мутарно...
Спасибо за совет =)
Можно ещё немного помощи ? ;) А то я в wininet не особо рулю...
Или хотя бы линк на справку по нему =)
Заранее благодарен =)
2 МongBa† забыл проверять еще на знак минуса )Неа, разве что проверку первого нуля, но эт так, для красоты... :p >> чтоб было возможно вводить только целые числа больше 0
Вопросец... имеем уже авторизированное окно деда (mstsc) , ищем его
ter:=FindWindow(nil,pchar(host+' - Удаленный рабочий стол'));
if ter<>0 then
begin
okno:=FindWindowEx(ter,0,nil,nil);
while okno<>0 do
begin
GetClassName(okno,s,100);
Form1.Memo1.Lines.Add(s);
okno:=GetNextWindow(okno,GW_HWNDNEXT);
end;Имеем основное окно ter и дочернее okno с классом TSCAXHOST , нужно послать нажатие Esc , пробую:
PostMessage(ter,WM_SYSKEYDOWN,VK_ESCAPE,0);
PostMessage(okno,WM_SYSKEYDOWN,VK_ESCAPE,0);
не жмет.. (
Как и какому именно окну в данном случае нужно слать нажатие кнопки?
Nullsleep
08.06.2009, 15:01
#Wolf#
1) Написать программу, которая после введенного с клавиатуры числа (от 1 до 999) , обозначающего денежную еденицу, дописывает слово "рубль" в правильной форме. (Например 5 рублей, 21 рубль)
var
r: string;
s: Char;
begin
Readln(r);
s := r[Length(r)];
if r[Length(r)-1] = '1' then Writeln(r+' рублей') else
if s = '1' then Writeln(r+' рубль') else
if (s = '2') or (s = '3') or (s = '4') then Writeln(r+' рубля') else
Writeln(r+' рублей');
end;
Nullsleep
08.06.2009, 15:04
blednii
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then
if Key <> #8 then Key := #0;
end;
Nullsleep
08.06.2009, 15:29
МongBa†, попробуй SetForegroundWindow(okno), а потом:
keybd_event(27, 0, 0, 0);
keybd_event(27, 0, KEYEVENTF_KEYUP, 0);
Не катит, окно становится активным но без нажатий... с другими окнами все проходит... видать здесь каверз непосредственно с Удаленным рабочим столом , мож кто сталкивался?
Nullsleep
08.06.2009, 16:17
ShowWindow(okno, SW_HIDE) тоже не катит?
blednii
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then
if Key <> #8 then Key := #0;
end;
Это для целых, а как сделать чтоб еще и дробные можно было вводить?
Nullsleep
08.06.2009, 16:37
Это для целых, а как сделать чтоб еще и дробные можно было вводить?
замени ['0'..'9'] на ['0'..'9', '.']
ShowWindow(okno, SW_HIDE) тоже не катит?
Канает только для ter, кстати его класс TSSHELLWND
В предыдущем варианте
SetForegroundWindow(ter);
keybd_event(27, 0, 0, 0);
keybd_event(27, 0, KEYEVENTF_KEYUP, 0);
И задержки расставлял, и кнопки менял - безуспешно, при чем сразу после выполнения кода я вручную нажал Esc и он сканал
МongBa†, скажи как вызвать это окно и какая у тебя винда. Я попробую потыкать что-нибудь
ВиньХР СП2
выполнить - mstsc (mstsc.exe mstscax.dll версии 6.0.6000.16386)
сервера:
202.171.79.128:3389
62.208.74.243:3389
216.139.166.111:3389
200.14.52.87:3389
210.7.7.84:3389
114.129.25.212:3389
88.83.0.226:3389
216.139.166.81:3389
195.219.65.148:3389
202.3.242.196:3389
81.18.226.126:3389
123.50.85.52:3389
123.50.85.1:3389
202.3.245.61:3389
115.84.65.112:3389
208.66.48.194:3389
41.202.167.24:3389
Логинов пассов не знаю, собсно и состоит задача в том чтоб написать свежий многопотоковый брут на новом клиенте, заметил что актуальный на данный момент tss-brute - частенько пропускает верные пароли.
Логинимся, и требуется в появившемся окне "127.11.22.33 - Подлючение к удаленному рабочему столу" нажать 2 раза Esc .
Ребята, подскажите как сделать вкладки в программе, приблизительно такие как во всех настройках (маленькая кнопочка с названием на которую когда нажимаешь появляеться в том же окне другая информация).
Вот PageControl вроде называеться, но как с ней работать, покажите пожалуйста на простом примере.
Maxxxtri23
08.06.2009, 21:48
Есть у кого исходники _http://www.xakep.ru/post/27185/default.asp а именно _http://www.xakep.ru/post/27185/source.zip
Scripter
08.06.2009, 22:16
http://www.beluch.ru/progr/100comp/7_3.htm
http://yandex.ru/yandsearch?rpt=rad&text=PageControl
_GlaD1aT(OR)_
09.06.2009, 03:16
Подскажите пожалуйста две процедуры:
1. Какой код надо написать, что-бы при нажатии на кнопку программа сворачивалась.
2. На форме есть ListBox (C 2я столбцами) и Edit, как сделать так, что-бы при нажатии на 1ую строку, на Edit'e было написано тоже самое, а при нажатии на 2ую строку, на Edit'e было написано тоже, что и на второй строке сообветственно
Заранее большое спасибо
Подскажите пожалуйста две процедуры:
1. Какой код надо написать, что-бы при нажатии на кнопку программа сворачивалась.
2. На форме есть ListBox (C 2я столбцами) и Edit, как сделать так, что-бы при нажатии на 1ую строку, на Edit'e было написано тоже самое, а при нажатии на 2ую строку, на Edit'e было написано тоже, что и на второй строке сообветственно
Заранее большое спасибо
1. По идее WindowState:=wsMinimized; , но работает немного не корректно...
2. По событию OnClick на ЛистБоксе: Edit.Text:=ListBox.Items.Strings[ListBox.ItemIndex];
Nullsleep
09.06.2009, 06:09
ВиньХР СП2
выполнить - mstsc (mstsc.exe mstscax.dll версии 6.0.6000.16386)
сервера:
202.171.79.128:3389
62.208.74.243:3389
216.139.166.111:3389
200.14.52.87:3389
210.7.7.84:3389
114.129.25.212:3389
88.83.0.226:3389
216.139.166.81:3389
195.219.65.148:3389
202.3.242.196:3389
81.18.226.126:3389
123.50.85.52:3389
123.50.85.1:3389
202.3.245.61:3389
115.84.65.112:3389
208.66.48.194:3389
41.202.167.24:3389
Логинов пассов не знаю, собсно и состоит задача в том чтоб написать свежий многопотоковый брут на новом клиенте, заметил что актуальный на данный момент tss-brute - частенько пропускает верные пароли.
Логинимся, и требуется в появившемся окне "127.11.22.33 - Подлючение к удаленному рабочему столу" нажать 2 раза Esc .
МongBa†, я бы на твоем месте лучше гуглил протокол RDP и делал свой клиент. Это и быстрее (в плане перебора), и извращения с окошками не нужны.
Кстати на античате уже поднималась такая тема:
http://forum.antichat.ru/showthread.php?p=1106632
file not found(graph.tpu)
выложите кто нибудь graph.tpu...очень надо((((((((
или подскажите как избавиться от этой ошибки
Скачать файл UNITS.rar (http://dump.ru/file/2878014)
Разархивируешь, дальше идёшь в options -> directories и выбираешь путь к этой папке.
Maxxxtri23
10.06.2009, 19:53
1)Как узнать запущен ли процесс зная его путь?
2)Как убить процесс зная его путь?
zeppe1in
11.06.2009, 00:44
зная имя фаила.
1) получить пид, если =0 то процесс не запущен.
pid:=GetProcessId('process.exe');
2) вот такую процедуру я нашол
ProcessTerminate(pid);
function ProcessTerminate(dwPID:Cardinal):Boolean;
var
hToken:THandle;
SeDebugNameValue:Int64;
tkp:TOKEN_PRIVILEGES;
ReturnLength:Cardinal;
hProcess:THandle;
begin
Result:=false;
// Добавляем привилегию SeDebugPrivilege
// Для начала получаем токен нашего процесса
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
or TOKEN_QUERY, hToken ) then
exit;
// Получаем LUID привилегии
if not LookupPrivilegeValue( nil, 'SeDebugPrivilege', SeDebugNameValue )
then begin
CloseHandle(hToken);
exit;
end;
tkp.PrivilegeCount:= 1;
tkp.Privileges[0].Luid := SeDebugNameValue;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Добавляем привилегию к нашему процессу
AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp) ,tkp,ReturnLength);
if GetLastError()<> ERROR_SUCCESS then exit;
// Завершаем процесс. Если у нас есть SeDebugPrivilege, то мы можем
// завершить и системный процесс
// Получаем дескриптор процесса для его завершения
hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
if hProcess =0 then exit;
// Завершаем процесс
if not TerminateProcess(hProcess, DWORD(-1))
then exit;
CloseHandle( hProcess );
// Удаляем привилегию
tkp.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength);
if GetLastError() <> ERROR_SUCCESS
then exit;
Result:=true;
end;
Maxxxtri23
11.06.2009, 07:59
зная имя фаила.
1) получить пид, если =0 то процесс не запущен.
pid:=GetProcessId('process.exe');
end;[/CODE]
Немного не то, мне нужно именно по пути, потомучто много процессов с одинаковым именем, и завершить надо не все, а именно который лежит по определенному пути
Nullsleep
11.06.2009, 17:37
Немного не то, мне нужно именно по пути, потомучто много процессов с одинаковым именем, и завершить надо не все, а именно который лежит по определенному пути
procedure TaskKill(FileName: string);
var
wh: Bool;
sp, sm, th: THandle;
pe: TProcessEntry32;
me: TModuleEntry32;
seid: Int64;
tp: TOKEN_PRIVILEGES;
rl: Cardinal;
begin
//получаем debug-привелегию
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, th);
LookupPrivilegeValue(nil, 'SeDebugPrivilege', seid);
with tp do
begin
PrivilegeCount := 1;
Privileges[0].Luid := seid;
Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
end;
AdjustTokenPrivileges(th, False, tp, SizeOf(tp), tp, rl);
//создаем снапшот
sp := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize := SizeOf(pe);
wh := Process32First(sp, pe);
//пробегаемся циклом по всем процессам и убиваем FileName при совпадении
while wh <> False do
begin
sm := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
me.dwSize := SizeOf(me);
Module32First(sm, me);
if LowerCase(me.szExePath) = LowerCase(FileName) then
TerminateProcess(OpenProcess($0001, False, pe.th32ProcessID), 0);
CloseHandle(sm);
wh := Process32Next(sp, pe);
end;
CloseHandle(sp);
tp.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(th, False, tp, SizeOf(tp), tp, rl);
end;
В FileName указываем полный путь до файла.
Кстати, если кому интересно, можно получить список процессов с их полными путями:
- меняем procedure TaskKill(FileName: string); на procedure TaskList(Lines: TStrings);
- вместо if LowerCase(me.szExePath) = LowerCase(FileName) then TerminateProcess(OpenProcess($0001, False, pe.th32ProcessID), 0); пишем Lines.Add(me.szExePath);
- бросаем на форму Memo1 и вызываем TaskList(Memo1.Lines);
Всем доброго времени суток =)
У меня есть программа.. Что то типо управление трояном.. Но не хватает мозга реализовать такую фичу : Когда я включил программу то в лист боксе у меня долны появится ип компьютеров на которых есть мой троян..
Как это реализовать ?
Заранее спасибо!
Пускай зараженые компы стучатся к тебе на указаный порт
Nullsleep
13.06.2009, 10:58
Лучше пусть они стучатся на чужой комп (за которым гарантированно ламер), а то так засветишься в первый же день. ;) А уже этот комп пусть отсылает айпишники зараженных компов на твой сервер
Спасибо =) Попробую замутить =)
P.S Пожалуй лучший форум в инете где можно быстро получить адекватные ответы ! =)
.::f-duck::.
13.06.2009, 19:55
В компоненте TICQCLIent нужно установить статус номера в то время, когда UIN находится в онлайне.
ICQCLient1.Status(S_ONLINE);
Не подходит =/
Вот такая вот ботва =/
В компоненте TICQCLIent нужно установить статус номера в то время, когда UIN находится в онлайне.
ICQCLient1.Status(S_ONLINE);
Не подходит =/
Вот такая вот ботва =/
Напиши в асю после 23:00 попробую помочь.
..::TROYAN::..
14.06.2009, 16:22
пишу шас многопоточный брут но столкнулся с проблемой : при запуске потоков прога вылетает с ошибкой или начинает сильно лагать...хз может гдето туплю..кто писал уже много поточные бруты и т.п... стукните плз в аську:985940
KaZ@NoVa
14.06.2009, 17:36
.::f-duck::. проверь свойство LoggedIn, если вернёт FALSE, то беда в нём, ибо статус можно менять только после логина на сервере//
.::f-duck::.
14.06.2009, 17:40
KaZ@NoVa, беда в том, что не дает скомпилировать =/ пишет, что нет такого "S_ONLINE"
KaZ@NoVa
14.06.2009, 17:48
а если попробовать скажем ставить не S_ONLINE, а вместо него поставить 1,0, или что там соответствует S_ONLINE
S_ONLINE ето констатна.
нажми Ctrl, наведи на "S_ONLINE" в проекте, кликни, и увидешь как и где она обьявлена
KaZ@NoVa
14.06.2009, 19:59
пишу шас многопоточный брут но столкнулся с проблемой : при запуске потоков прога вылетает с ошибкой или начинает сильно лагать...хз может гдето туплю..кто писал уже много поточные бруты и т.п... стукните плз в аську:985940
скинь сорсы трояна, я посмотрю, что можно сделать//
Xcontrol212
17.06.2009, 01:01
program baran;
const n=2;
type ozera = record
name: string[10];
glybina: integer;
razmer: integer;
strana: string[10];
end;
var a:array [1..n] of ozera;
c,d,i, p: integer; names,stranas: string;
t:text;
glybinas,razmers: integer;
begin
for i:= 1 to n do
begin
writeln('ozero ',i);
ReadLn(a[i].name);
ReadLn(a[i].glybina);
ReadLn(a[i].razmer);
ReadLn(a[i].strana);
end;
for i:= 1 to n do
begin
Write(a[i].name,' ',a[i].glybina,' ',a[i].razmer,' ',a[i].strana);
WriteLn;
end;
For p:=n downto 1 do
for i:= 1 to n-1 do
begin
if a[i].name>a[i+1].name then
begin
names:= a[i].name;
a[i].name:= a[i+1].name;
a[i+1].name:= names;
glybinas:= a[i].glybina;
a[i].glybina:= a[i+1].glybina;
a[i+1].glybina:= glybinas;
razmers:= a[i].razmer;
a[i].razmer:= a[i+1].razmer;
a[i+1].razmer:= razmers;
stranas:= a[i].strana;
a[i].strana:= a[i+1].strana;
a[i+1].strana:= stranas;
end;
end;
c:=a[1].glybina;
d:=a[2].razmer;
for i:=1 to n do begin
If a[i].glybina>c
then c:=a[i].glybina;
if a[i].razmer>d
then d:=a[i].razmer;
end;
assign (t,'output.txt');
rewrite(t);
for i:= 1 to n do
begin
Writeln(t,a[i].name,a[i].glybina,a[i].razmer,a[i].strana);
end;
{writeln(t,c);
writeln(t, d ) ;}
close(t);
reset(t) ;
for i:=1 to n do
begin
read(t,a[i].name,a[i].glybina,a[i].razmer,a[i].strana);
writeln(a[i].name,' ',a[i].glybina,' ',a[i].razmer,' ',a[i].strana);
end;
readln(t,c) ;
writeln('samoe glybokoe - ',c) ;
readln(t, d );
writeln('samoe bolbwoe- ', d );
close(t);
ReadLn;
end.
косяка в сортировке нету
косяк именно в считывании данных с файла
Задание:
В файле хранятся данные о членах некоторого коллектива: фамилия, имя (как мужского, так и женского пола), год рождения, телефон. Среди представленных персон немало однофамильцев, персон одного года рождения, с одинаковым именем и т.д. Упорядочить список по невозрастанию количества однофамильцев. Предусмотреть вывод информации, например, для всех Ивановых.
.::f-duck::.
17.06.2009, 13:33
Есть некая переменная и мне нужно сравнить ее с несколькими значениями.
If a='' Then Begin...
Так очень муторно писать,да и не очень хорошо влияет на код. Мне нужен альтернаивтный вариант типа case of
KaZ@NoVa
17.06.2009, 15:11
Есть некая переменная и мне нужно сравнить ее с несколькими значениями.
If a='' Then Begin...
Так очень муторно писать,да и не очень хорошо влияет на код. Мне нужен альтернаивтный вариант типа case of
case [переменная] of
[значение]: begin
[оператор]
[оператор]
end;
end;
чем ни чудо?)... :rolleyes:
.::f-duck::.
17.06.2009, 15:27
Я же говорю, что не пашед. Переменная типа string .
KaZ@NoVa
17.06.2009, 15:33
Я же говорю, что не пашед. Переменная типа string .
а ты в одинарных кавычках её записал :D ?
Joker-jar
17.06.2009, 15:59
Есть некая переменная и мне нужно сравнить ее с несколькими значениями.
If a='' Then Begin...
Так очень муторно писать,да и не очень хорошо влияет на код. Мне нужен альтернаивтный вариант типа case of
case только для однобайтовых величин...
Делай вместо If a='' Then Begin...
if a <> '' then exit;
помоги с проблемкой....
как в делфи программно отключить выравнивание иконок на рабочем столе(по типу, имени, размеру и по сетке)?
KaZ@NoVa
19.06.2009, 19:20
помоги с проблемкой....
как в делфи программно отключить выравнивание иконок на рабочем столе(по типу, имени, размеру и по сетке)?
..можно найти файл с конфигурацие рабочего стола( я хз как он называется), и переписывать его. способ зверский, но рабочий 100%..
посмотри тут:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer...
и тут
http://www.delphikingdom.com/asp/viewitem.asp?catalo... (скачайте архив примера DskIcLive.zip)
scroollocker
21.06.2009, 12:03
Не получается закинуть файл на фтп! Проблемное место в коде отмечено!
Delphi говорит: "Incompatible types: 'string' and 'PAnsiChar' "
Помогите!
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, wininet, Mask, ComCtrls;
var
conn_param,inet_open : hinternet;
AboutPC, ftpfilename, filename:pchar;
port: integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Port:=21;
AboutPC:=Pchar('PC');
filename:='C:\Info_.txt';
ftpfilename:='/test/Info_'+AboutPC+'.txt'; // вот здесь он ругается!
inet_open := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT, nil,nil,0);
conn_param := internetconnect(inet_open,'ftp.ru',port,'Name','Pa ss',INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
sleep(100);
ftpputfile(conn_param,filename,ftpfilename,FTP_TRA NSFER_TYPE_UNKNOWN,0);
internetclosehandle(conn_param);
internetclosehandle(inet_open) ;
if true then
showmessage('Good');
end;
end.
pchar - это указатель и ты должен выделить память под данные.
так что в твоем случае быстрее будет юзать string а там гед нужно конвертить в pchar
типа pchar(переменная_типа_стринг)
scroollocker
21.06.2009, 12:50
slesh
Спасибо, а примерный код можешь скинуть?
Nizhegorodets
21.06.2009, 15:34
Задача:
есть memo и текст в нем нужно каждые 15 сек переносить в edit строчку из memo (сначало первую, потом вторую, потом третью и т.д.)
Меня интересует сам процесс перенесения строчек из memo в edit.
Плиз подскажите как это сделать?
1) ну чтобы переносить каждые 15 секунд то юзай таймер
можешь компонентом, а можешь апишкой - settimer
2) ты можешь сразу закинуть в edit всё содержимое memo
edit1.text := memo1.text;
или отдельную строку
edit1.text := memo1.Lines.Strings[x]
где X - номер строки
P.S. нумерация строк идет он 0 и до memo1.Lines.Count-1
т.е. можешь просто в цикле пробегаться по строкам
Nizhegorodets
21.06.2009, 16:22
slesh Спасибо)
scroollocker
21.06.2009, 21:43
Как выделить память для PChar?
Как выделить память для PChar?
var
buf:pchar;
....
size:=1000; 1000 байт
GetMem(Buf,Size);
....
FreeMem(Buf);
--StraNger--
21.06.2009, 21:46
еще способ
var
s:array[0..200] of char
s2:pchar
begin
s2=@s;
end;
Как выделить память для PChar?
и ещё =)
var
c: PChar;
begin
new(c);
Nizhegorodets
22.06.2009, 11:53
Нужно скопировать текст из edit в буфер обмена.Как это можно осуществить?
Нужно скопировать текст из edit в буфер обмена.Как это можно осуществить?
Clipboard.AsText := edit1.text;
в разделе Uses должен быть прописан модуль ClipBrd
Нужно занести данные на web страницу через TWebBrowser
выдает ошибку:
http://s44.radikal.ru/i103/0906/ca/ff1db8f3048f.jpg
Подскажите что не так.
И поделитесь ссылкой на подробную статью о работе c TWebBrowser если есть у кого
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw, MSHTML_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
v: Variant;
form : variant;
f,i:Integer;
begin
WebBrowser1.Navigate('http://id.rambler.ru/sсriрt/newuser.cgi');
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
for i:=0 to form.Length-1 do
if form.item(i).name='login' then
form.item(i).value:='test1'
else
if form.item(i).name='firstname' then
form.item(i).value:='test2';
end; end;
вылетает здесь:
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
а если заменить WebBrowser1.OleObject.Document.forms.Length-1 просто на цифру то здесь:
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
работа тут идет в асинхронном режиме и по этому
WebBrowser1.Navigate('http://id.rambler.ru/sсriрt/newuser.cgi'); - заставляет грузить страницу
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin - пытается обратиться к еще незагруженным данным, так что ожидай события OnDocumentComplete
Nizhegorodets
22.06.2009, 13:03
Clipboard.AsText := edit1.text;
в разделе Uses должен быть прописан модуль ClipBrd
+1
--StraNger--
22.06.2009, 13:13
Нужно скопировать текст из edit в буфер обмена.Как это можно осуществить?
Кстати не обязательно использовать отдельный класс Clipboard
Т.е.у некоторых компонентов есть свои методы.
Например:
Edit1.CopyToClipboard //копировать в буфер
Edit1.CutToClipboard //вырезать
работа тут идет в асинхронном режиме и по этому
WebBrowser1.Navigate('http://id.rambler.ru/sсriрt/newuser.cgi'); - заставляет грузить страницу
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin - пытается обратиться к еще незагруженным данным, так что ожидай события OnDocumentComplete
можно по подробнее об использовании события? желательно на примере.
зафикач код
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
for i:=0 to form.Length-1 do
if form.item(i).name='login' then
form.item(i).value:='test1'
else
if form.item(i).name='firstname' then
form.item(i).value:='test2';
в обработчик события. (события - там где свойства компонента, тока на другйо вкладке)
зафикач код
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
for i:=0 to form.Length-1 do
if form.item(i).name='login' then
form.item(i).value:='test1'
else
if form.item(i).name='firstname' then
form.item(i).value:='test2';
в обработчик события. (события - там где свойства компонента, тока на другйо вкладке)
все разобрался. все работает. спасибо
Вообщем надо мне просто один пакет послать... (который в мемо)(пакет/пакеты могут быть к разным хостам)
Как это сделать?
Там же надо с типом "sockaddr_in" что-то мудрить! Но я знаю как с ним мудрить если к одному хосту все это идет, а если к нескольким?(как в моем случае)
scroollocker
22.06.2009, 18:08
Не получается закинуть файл на фтп! Проблемное место в коде отмечено!
Delphi говорит: "Incompatible types: 'string' and 'PAnsiChar' "
Помогите!
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, wininet, Mask, ComCtrls;
var
conn_param,inet_open : hinternet;
AboutPC, ftpfilename, filename:pchar;
port: integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Port:=21;
AboutPC:=Pchar('Любая String строка');// вот я перевел String в PChar
filename:='C:\Info_.txt';
ftpfilename:='/test/Info_'+AboutPC+'.txt'; // вот здесь он ругается! и вылетает!
inet_open := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT, nil,nil,0);
conn_param := internetconnect(inet_open,'ftp.ru',port,'Name','Pa ss',INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
sleep(100);
ftpputfile(conn_param,filename,ftpfilename,FTP_TRA NSFER_TYPE_UNKNOWN,0);
internetclosehandle(conn_param);
internetclosehandle(inet_open) ;
if true then
showmessage('Good');
end;
end.
Я и память под PChar выделял и все делал как мне сказали, но не получается! Ну в чем тут трабла?
вот string в PChar перевел
AboutPC:=Pchar('Любая String строка');
а делфи ругает
ftpfilename:='/test/Info_'+AboutPC+'.txt';
"Incompatible types: 'string' and 'PAnsiChar' "
[n]-c0der
22.06.2009, 23:53
strcat() - использовать стремно?
scroollocker
23.06.2009, 11:06
[n]-c0der
Спасибо
Хотел сделать фейк ,
Захожу в компонеты - Microsoft internet controls .
Выдоёт ошибку файл не найден 'C:\windows\system23\ieframe.dll\1' Что делать?
[n]-c0der
23.06.2009, 22:13
Хотел сделать фейк ,
Захожу в компонеты - Microsoft internet controls .
Выдоёт ошибку файл не найден 'C:\windows\system23\ieframe.dll\1' Что делать?
Куда заходишь?
Где хотел сделать фейк?
что, как и при каких обстоятельствах не находит...
В этой теме задаются вопросы по синтаксису яп.
И вообще если задаем вопросы, старайтесь более развернуто спрашивать.
Nightmarе
23.06.2009, 22:30
Вопрос по ListBox, как там сделать так, чтобы при нажатии на конкретную линию она удалялась?
И тоже самое, но чтобы при нажатии на линию, её название вставлялось в edit
Вопрос по ListBox, как там сделать так, чтобы при нажатии на конкретную линию она удалялась?
И тоже самое, но чтобы при нажатии на линию, её название вставлялось в edit
можно просто по событию ListBox1 onMouseDown вписать процедуру listbox1.DeleteSelected;
[n]-c0der
24.06.2009, 07:39
можно просто по событию ListBox1 onMouseDown вписать процедуру listbox1.DeleteSelected;
Вообще не советую ставить такую обработку(DeleteSelected) на такое событие, при случайном нажатии, удалится то, чего удалять и не нужно, по идее как и принято, будет удобней ставить на событие двойного клика мышью...
procedure TForm1.list1DblClick(Sender: TObject);
var
list:TListBox;
begin
list:=TListBox.CreateParented(Form1.Handle);
list.DeleteSelected;
IMHO вот так.
--StraNger--
24.06.2009, 09:16
И тоже самое, но чтобы при нажатии на линию, её название вставлялось в edit
ну например делаешь обработчик события кликания на лист бокс вот таким
edit1.text:=ListBox1.Items.Strings[ListBox1.itemindex]
А вобще достаточно прочитать даже самый примитивный ман по ListBox =)
warning_512
24.06.2009, 10:00
Ну я пожалуй начну .. :)
Как сделать MYSQL DUMPER in Delphi|?
--StraNger--
24.06.2009, 10:11
полагаю, что с помощью компонента mysqlclient например
http://svdpro.info/page.php?id=18 - в общем об этом
а здесь интересный примерчик как раз для дампа
http://forum.vingrad.ru/forum/act-ST/f-88/t-260175.html
Areeeees
24.06.2009, 11:38
Добрового времени суток всем.
По роду деятельности приходится сталкиваться с компанентом TWebBrowser. А информации в рунете по нему не так уж и много... Вот хотелось бы узнать у более опытных товарищей, мб кто сталкивался с подобным...
А интересно вот что: допустим у нас есть программа в которой странички открываются в TWebBrowser'e.
Допустим открывается страница и там несколько фреймов и 2 строки под логин и пасс, в одном из них, ну и соответственно кнопка войти... Нужно, чтобы в своей программе ты вводил логин и пасс в TEdit1 u TEdit2 u нажимал TButton1 и эти данные передавались на станицу... Что то типа автологина...
Интересен вариант когда кнопка на странице выполнена кнопкой непосредственно(Button) и случай когда она реализована через картинку(типа того: <input type="image" class="button_login"name="submit"src="http://"width="96"height="17"/>
Метод передачи данных пост:
<form method="POST"action="/login/"name="login">
А это непосредственно поля логин и пасс:
<input name="login" type="text" id="login"class="edit_box" value="">
<input name="pass"id="pass" type="password" class="edit_box"value="пароль">
Заранее спасибо!
Nizhegorodets
24.06.2009, 18:47
как можно подсчитать строчки в memo? (текст туда добавляется посредством OpenDialog)
Nightmarе
24.06.2009, 20:00
как можно подсчитать строчки в memo? (текст туда добавляется посредством OpenDialog)
edit1.text:=inttostr(memo1.Lines.Count);
Интересен вариант когда кнопка на странице выполнена кнопкой непосредственно(Button) и случай когда она реализована через картинку(типа того:
function TForm1.ByName(FieldName: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
if WebBrowser.OleObject.Document.all.tags('FORM').Len gth = 0 then
begin
Exit;
end;
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
if FormItem.Item(j).Name = FieldName then
begin
if Value = 'Click' then
FormItem.Item(j).Click
else
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;
аналогично можеш сделать TForm1.ByValue и TForm1.ByScr
Вызов
ByName('login', 'Товой логин');
ByName('pass', 'Твой пароль');
ByName('submit', 'Click'); //Клик по кнопке
{
реализуй ByScr и вызывай
ByScr('http://', 'Click')
}
ЗЫ. Юзайте поиск, я уже как минимум уже 2 раза отвечал на такие вопросы.
Nizhegorodets
25.06.2009, 18:06
Nightmarе спс
Areeeees
25.06.2009, 21:31
dos999, спасибо! Ну как начал ковыряться возникли вопросы... Когда действие происходит в мэим фрейме все прекрасно работает, но если поля находятся не в мэин фрейме то почему-то то, что нужно туда не втыкается...
Этот случай сканирует всю страницу, или только мэин фрейм? Или мб я чего туплю...
Вот из кода фрейма:
<input onkeyup=\"_feProc(0)\" size=2 name=\"gte\" type=\"text\" value=\"0\" class=\"field\">
Или мб тут что нить особенное....
Предыдущий код выполняется внутри джава скрипта:
<script language="JavaScript"> тут задаются поля ввода и кнопки </script>
Вот что тут не так?....
Nizhegorodets
25.06.2009, 21:43
В IE или Opera при нажатии клавиши Tab выделяется следующий элемент странички
типа нажал выделилось поле ввода , еще раз, выделилась кнопка и т.д.
Как реализовать тоже самое в компоненте WebBrowser, а то делаю браузер и хочу внести в него такую фуннкцию...
------------------------------------------------------------
все разобрался нужно просто щелкнуть на WebBrowser1 и Tab начинает работать,но тут же появился новый вопрос можно ли как нибудь активировать WebBrowser не нажимая на него ЛевКнопкуМыши???
пробовал вот так
WebBrowser1.setfocus;
но ничего не получилось ,Tab все равно не работает...
Areeeees Кинь линк на страничку
zeppe1in
26.06.2009, 13:28
Nizhegorodets может Sendmessage BM_CLICK, хотя по идее и сетфокус должен работать.
Nizhegorodets
26.06.2009, 14:56
как сэмулировать нажатие на клавишу Enter?
вот например нажимаем на Tab
keybd_event(VK_TAB, 0, 0, 0);
а какой код для enter?
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=true;
Timer1.Interval :=60;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := ProgressBar1.Position + 1;
end;
1)подскажите как сделать, чтобы по оканчанию загрузки TProgressBar выполнялась команда MessageBox ?
2)Есть Label, Button. Как сделать, чтобы при нажатии на батон, происходила проверка текста в лейбле? ну если в лейбле например введен определённый текст, который я ввёл в коде проги, то при нажатии на батон, вылетит сообщение "Верно", а если текст иной, то вылетит "Не верно" ?
как сэмулировать нажатие на клавишу Enter?
вот например нажимаем на Tab
keybd_event(VK_TAB, 0, 0, 0);
а какой код для enter?
VK_RETURN
>>1)подскажите как сделать, чтобы по оканчанию загрузки TProgressBar выполнялась команда MessageBox ?
это не команда
вот код в таймере:
ProgressBar1.StepIt;
if (ProgressBar1.Position = ProgressBar1.Max) then ShowMessage('a');
>>2)Есть Label, Button. Как сделать, чтобы при нажатии на батон, происходила проверка текста в лейбле? ну если в лейбле например введен определённый текст, который я ввёл в коде проги, то при нажатии на батон, вылетит сообщение "Верно", а если текст иной, то вылетит "Не верно" ?
if (Label1.Caption = 'abc') then ShowMessage('true') else ShowMessage('false');
ProgressBar1.StepIt;
if (ProgressBar1.Position = ProgressBar1.Max) then ShowMessage('a');
если добавляю такой код в таймер, то ProgressBar начинает бегать с другой скоростью + доходит до конца и начинается всё с начала + сообщение 'a' вылетает постояно, не возможно закрыть =**
как это исправить? нужно чтобы просто ProgressBar дошёл до конца и вылетело сообщение и всё
Nightmarе
27.06.2009, 00:24
Вопрос по отправке файла на FTP!
Я использую такую функцию для отправки файла на FTP:
procedure TForm1.DownloadToFtp(host,login,pass,path,name:str ing);
var
handal:DWORD;
conn_param,inet_open : hinternet;
begin
inet_open := internetopen('iexplore',INTERNET_OPEN_TYPE_DIRECT, nil,nil,0);
conn_param := internetconnect(inet_open,Pchar(host),21,Pchar(log in),Pchar(pass),INTERNET_SERVICE_FTP,INTERNET_FLAG _PASSIVE,0);
sleep(100);
ftpputfile(conn_param,Pchar(path),Pchar(name),FTP_ TRANSFER_TYPE_UNKNOWN,0);
internetclosehandle(conn_param);
internetclosehandle(inet_open);
end;
Всё работает хорошо... на первый взгляд хорошо.
Один файл нормально отпарвляется, но если следом отправить ещё один, то вот тут и ошибки... На сервере создаётся пустой файл.
я так понимаю это из за того что нету функции дисконнекта от фтп, если кто знает как исправить ошибку в коде то плиз подскажите как сделать дисконнект если он вообще нужен...
Почему не работает код из этой статьи: http://www.xakep.ru/magazine/xA/050/052/2.asp
У меня не работает вот эта строка
lbAddConnect.Items.Add(AThread.Connection.Binding. PeerIP); // определение IP подсоединившегося
ProgressBar1.StepIt;
if (ProgressBar1.Position = ProgressBar1.Max) then ShowMessage('a');
если добавляю такой код в таймер, то ProgressBar начинает бегать с другой скоростью + доходит до конца и начинается всё с начала + сообщение 'a' вылетает постояно, не возможно закрыть =**
как это исправить? нужно чтобы просто ProgressBar дошёл до конца и вылетело сообщение и всё
шедевр, а Timer1.Enable:=False; добавить никак?
transserg
27.06.2009, 09:59
всем привет! есть парочка вопросов!
1. возможно ли в программе сделать горячии клавиши типа cntrl+a+s+e или cntrl+win+f+i
2. если создавать форму на winapi то как или чем создать ресурс с формой и компонентами на ней?
3. есть ли api для работы с процессами(чтоб узнать инфу о процессе)?
4. вопрос неоднакратно поднимался но ответов ненаходил, как безепасно отключить НУЖНОЕ USB устройство в частности флешку! желательно без использования реестра!
всем ответившим заранее спасибо!
s0l_ir0n
27.06.2009, 10:16
всем привет! есть парочка вопросов!
1. возможно ли в программе сделать горячии клавиши типа cntrl+a+s+e или cntrl+win+f+i
2. если создавать форму на winapi то как или чем создать ресурс с формой и компонентами на ней?
3. есть ли api для работы с процессами(чтоб узнать инфу о процессе)?
4. вопрос неоднакратно поднимался но ответов ненаходил, как безепасно отключить НУЖНОЕ USB устройство в частности флешку! желательно без использования реестра!
всем ответившим заранее спасибо!
1 - да
2 - блокнот
3 - есть
4 - хз :cool:
transserg
27.06.2009, 10:26
s0l_ir0n
улыбнуло . а можно по подробней?
1) Насчёт горячих клавиш. У пунктов меню MainMenu есть такое свойство: ShortCut. Вот там и выбираешь горячие клавиши. Можно ещё в св-ве Caption перед нужной буквой поставить знак &. Тогда при нажатии Alt+той буквы(которая идёт после &) будет вызываться эта команда. Вот сделал исходник: http://webfile.ru/3739845
transserg
27.06.2009, 15:00
Тихий спасибо за пример но не много не то =) а если программа свернута и ее окно не активно то такие клавиши не сработают! поэтому и нужно использовать глобальные клавиши
вот к примеру клавиши
const
//----------------------------------------------------------------------------------------
MOD_ALT = 1;
MOD_CONTROL = 2;
MOD_SHIFT = 4;
MOD_WIN = 8;
//----------------------------------------------------------------------------------------
регистрируем так
id:=GlobalAddAtom('HotKey');
RegisterHotKey(hWnd, id, MOD_ALT+MOD_CONTROL,VK_A);
мы зарегистрировали глобальную CNTRL+ALT+A
а если написать так
id:=GlobalAddAtom('HotKey');
RegisterHotKey(hWnd, id, MOD_ALT+MOD_CONTROL,VK_A+VK_B);
VK_A=65;
VK_B=66;
VK_A+VK_B=131
код 131 соответствует клавише VK_F20 = 131 (ток на клаве что то нет ее =) )
тем самым получается что просто так не получится зарегистрирова горячуюю клавишу вида CNTRL+ALT+A+R+(еще n'е количество букв), вопрос в том реально ли это сделать без "изврата"
Доброго времени суток всем. Помогите разобраться, люди добрые=) Вобщем есть форма, на ней кнопка одна и лейбл один. Мне нужно, чтоб при нажатии на кнопку выводилось в лейбл первое значение массива, при повторном нажатии второе значение и так далее. Массив заранее уже заполнен. У меня постоянно выводится только последнее значение, при этом использую for. Заранее благодарю за помощь.
in button click:
.....
i:=i+1;
lblLabel.caption:=IntToStr(mas[i]);
.....
where i:integer; and mas your array =)
N - кол-во элементов в массиве
var
mas:array[1..N] of string;
mas_pos:integer = 1;
.......................
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := mas[mas_pos];
inc(mas_pos);
if mas_pos > N then mas_pos := 1; // типа по кругу будем всё выводить )
end;
slesh, огромнейшее тебе спасибо, очень помог.
Делаю программу как бы со скином поставил border style >>> bs_none что-бы небыло "окошка" но не знаю как теперь перемещать его, можно ли добавить какойнибудь компонент за который можно было бы перемещать окно или может код который позволит перемещать окно за любое место???????????
[n]-c0der
01.07.2009, 23:32
Делаю программу как бы со скином поставил border style >>> bs_none что-бы небыло "окошка" но не знаю как теперь перемещать его, можно ли добавить какойнибудь компонент за который можно было бы перемещать окно или может код который позволит перемещать окно за любое место???????????
можно.
0ldbi4,
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform (WM_SYSCOMMAND,SC_MOVE+2,0);
end;
Пожалуйста не говорите, что разделить и будет проще. Помогите с данным вопросом.
procedure TForm1.Button1Click(Sender: TObject);
var
begin
Первая часть кода
Если мы нажимаем button2, то продолжается работа программы и выполняется кусок кода номер 2
Вторая часть кода
end;
Как это реализовать, заранее спасибо!
transserg
02.07.2009, 12:45
A_V
procedure TForm1.Button1Click(Sender: TObject);
begin
case (Sender as Tbutton).Tag of
1:ShowMessage((Sender as Tbutton).Caption);
2:ShowMessage((Sender as Tbutton).Caption);
end;
end;
за место ShowMessage твой код 1 или код 2 но свойство tag у Buton'ов установи заранее! и на вкладке events в обработчике событий поставь у баттонов этот обработчик!
помойму вы меня не совсем поняли
сначала исполняется первая часть кода, а для продолжения надо нажать баттон 2 и тогда выполнится вторая
часть кода
он хочет вроде паузы в console application...
transserg
02.07.2009, 13:19
B]A_V[/B]
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Sender as Tbutton).Tag=2 then
(Sender as Tbutton).Tag:=123;
begin
первая часть кода
end;
while (Sender as Tbutton).Tag<>123 do
begin
application.processmessage;
sleep(1000);
end;
end;
пропробуй но с wahil думаю не лучший вариант
p.s писал с кпк возможны ошибки
transserg
Спасибо, но все равно не то, что надо.
Попробую пойти другим путем.
[n]-c0der
02.07.2009, 15:00
помойму вы меня не совсем поняли
сначала исполняется первая часть кода, а для продолжения надо нажать баттон 2 и тогда выполнится вторая
часть кода
А что мешает создать две функции, выполнить сначала одну, а по нажатию батона2 выполнить вторую функцию...
О_о
_GlaD1aT(OR)_
05.07.2009, 08:16
А какой функцией можно сделать, чтобы при нажатии на кнопку открывалась какая-либо папка? Заранее благодарен
как вариант winexec('explorer c:\windows',sw_show);
[n]-c0der
05.07.2009, 13:01
эээ...ShellExecute,WinExec, CreateProcess
2 [n]-c0der Хотя есть апишка специально для этого предназначенная, но я не помню как она завется )
Просто в данном случаем мы сильно привязываемся к тому что explorer является дефолтовой оболочкой
p.s. нашел вот это более правильный метод который вроде как не зависит от того, какая программа является проводником.
shellapi.ShellExecute(0, 'open', 'c:\windows', nil, nil, SW_SHOW);
где можно скачать программу Shark2???для виндовс 7 ????
[n]-c0der
06.07.2009, 00:54
2 [n]-c0der Хотя есть апишка специально для этого предназначенная, но я не помню как она завется )
Просто в данном случаем мы сильно привязываемся к тому что explorer является дефолтовой оболочкой
Если честно, то не слышал о такой...
\\ChaOs//
06.07.2009, 01:12
shellapi.ShellExecute(0, 'open', 'c:\windows', nil, nil, SW_SHOW);
Правильней будет shellapi.ShellExecute(0, 'explore', 'c:\windows', nil, nil, SW_SHOW);
[n]-c0der
06.07.2009, 16:26
Правильней будет shellapi.ShellExecute(0, 'explore', 'c:\windows', nil, nil, SW_SHOW);
ну а теперь обоснуй свое мнение.
\\ChaOs//
06.07.2009, 16:59
-c0der']ну а теперь обоснуй свое мнение.
И explore и open приведут к одинаковым результатам, но поскольку функция используется именно для того, чтобы открыть папку, то целесообразней будет использовать именно explore. Так код будет проще понять.
zifanchuck
08.07.2009, 13:59
Хочу научиться програмировать в делфи. Купил книгу В.Пестрикова А. Маслобоева "Delphi на примерах". Какая щас самая нормальная среда програмирование??И если можно ссылочку на скачку)
NightJack
08.07.2009, 15:20
Вообще для начала мне кажеться стоит скачать TurboDelphi (она бесплатная), а потом уже сам определишся. А по поводу книг... Я не считая занятий в институте учился по книге Фленова "Библия Delphi" ИМХО лучше с неё начинать, но опять же повторюсь каждому своё... :)
И explore и open приведут к одинаковым результатам, но поскольку функция используется именно для того, чтобы открыть папку, то целесообразней будет использовать именно explore. Так код будет проще понять.
выдержка из MSDN:
Parameters
...
lpOperation
edit - Launches an editor and opens the document for editing. If lpFile is not a document file, the function will fail.
explore - Explores a folder specified by lpFile.
find - Initiates a search beginning in the directory specified by lpDirectory.
open - Opens the item specified by the lpFile parameter. The item can be a file or folder.
print - Prints the file specified by lpFile. If lpFile is not a document file, the function fails.
NULL - In systems prior to Microsoft Windows 2000, the default verb is used if it is valid and available in the registry. If not, the "open" verb is used.
In Windows 2000 and later, the default verb is used if available. If not, the "open" verb is used. If neither verb is available, the system uses the first verb listed in the registry.
Вечер добрый всем. Люди, подскажите как осуществить поиск и копирование папки со всем содержимым на съемный носитель. Подчеркиваю, нужно именно папки, а не файлов. Заранее благодарю всех.
strelok2013
08.07.2009, 20:19
Всем привет, простите уж за тупые вопросы, но никто не подскажет где найти русскоязычное описание компонентов glscene?
Всем привет, простите уж за тупые вопросы, но никто не подскажет где найти русскоязычное описание компонентов glscene?
Русский сайт движка GLScene
http://glscene.ru/
strelok2013
09.07.2009, 00:32
eLWAux спасибо, еще если сможешь подсказать всякую полезную интернет-литературу по этому движку , ну малоли там когда попадется, сообщи мне пожалуйста
Nightmarе
09.07.2009, 01:48
Подскажите плиз.
Создаю файл командой:
TFileStream.Create(path, fmCreate);
Если файл невозможно создать (несуществует путь, отсутствуют права на запись и т.д...) система бабахает ошибку.
Как мне сделать проверку, можно ли создать файл или нет, и обработать событие в обоих случаях ?
Если можно с примером плз.
Hellsp@wn
09.07.2009, 02:09
// просто проверка на наличие
If GetFileAttributesA(pchar(path)) = DWORD(-1) then
begin
// файла нету
TFileStream.Create(path, fmCreate);
end;
...
hfile := _lcreat(pfile,0);
If (hfile <> DWORD(-1))
then CloseHandle(hfile); // успешно
...
try
TFileStream.Create(path, fmCreate);
except
// ошибочка
end;
zifanchuck
09.07.2009, 11:42
люди плизз дайте ссылку на скачку делфи. Их так много версий, незнаю какую выбрать( мне только чтобы одним файлом.В гугле искал так там они на депозит залилти, или на смсфайл(тому кто даст норм ссылку поставлю +
NightJack
09.07.2009, 13:28
Вот ссылка на Turbo Delphi Explorer https://downloads.embarcadero.com/free/turbodelphi
NightJack
09.07.2009, 13:35
А здесь Delphi 2009: http://qiq.ru/29/11/2008/programs_soft/60587/delphi_2009_i_c_builder_2009__lekarstvo.html
Сам её щас качаю...
Вот хорошая версия, много компонентов с ней идет http://torrents.ru/forum/viewtopic.php?t=1974361
подскажите.
procedure TForm1.button1Click(Sender: TObject);
var
Index: Integer;
Temp: TStringList;
begin
Temp:= TStringList.Create();
for Index:= 0 to Bana.Count - 1 do
begin
if (Bana[Index] <> '') and (Temp.IndexOf(Bana[Index]) = -1) then
Temp.Add(Bana[Index])
end;
try
begin
Temp.SaveToFile...
и при нажатии на кнопку выходит ошибка:
Project raised exception class EAccessViolation with message...
и становиться на строку for Index:= 0 to Bana.Count - 1 do
в чем проблема?
Когда делаю такой запрос
Memo1.Text:= idHTTP1.Get('http://mail.ru');
норм сорц грузит, а если
Memo1.Text:= idHTTP1.Get('http://my.mail.ru/mail/wasja.lllw/');
Вылезает ошибка 302, что сделать чтобы сорц тоже грузило?
Все разобрался)
поставил
idhttp1.HandleRedirects:=true;
2boomba мож Bana не инициализирован? Оо
добавь if Assigned(Bana) then перед циклом
if Assigned(Bana) then
for Index:= 0 to Bana.Count - 1 do
и посмотри что получиться.
спасибо. обошлось без ошибки.
Есть стринг такого вида
str:='c:\catalog\number1\program.exe';
Как вырезать слово program.exe и вставить в другую переменную?(делфи)
Есть стринг такого вида
str:='c:\catalog\number1\program.exe';
Как вырезать слово program.exe и вставить в другую переменную?(делфи)
str:=Copy(str,20,Length(str)-20);
и в str у тебя будет program.exe
что то типо такого
str:=Copy(str,20,Length(str)-20);
и в str у тебя будет program.exe
что то типо такого
Чуть дополню вопрос для непонятливых
Путь до программы может быть разным...
transserg
11.07.2009, 09:12
sr:=extractfilename(str);
в sr твоё имя файла ток подключи модуль sysutils
Nizhegorodets
11.07.2009, 12:50
есть рега на сайте . хочу сделать для нее бота , который сам регистрируется.
рега очень простая, несколько полей ввода типа: логин, пароль, секретный вопрос,ответ на него,майл + одна кнопка.
Я делал так , заполнял поля и нажимал на кнопку. А возможно ли осуществить подобное отправкой одного пост запроса?
перехватил отправку данных на их сервер (через Firefox Tamper Data)
и вот что получилось...
POSTDATA=login=jijidjijio&pass=ijiojioijio&question=ijiojiooioihiosxsx&answer=ihiohihoioh&email=ihihoihoi&submit=%26%231043%3B%26%231086%3B%26%231090%3B%26% 231086%3B%26%231074%3B%26%231086%3B
Вопрос по IdFTP
Не отправляется файл на FTP сервер. скачивание в пассивном режиме проходит норм. закачка нет. нет не ошибки, нихрена
IdFTP->Put("localfile.txt","inetfile.txt",false);
В чём трабл - понять не могу=((
Чуть дополню вопрос для непонятливых
Путь до программы может быть разным...
так этот разный путь забей в переменную допустим path и склеивай путь и имя файла
str:=path+str
и всё
[n]-c0der
11.07.2009, 13:43
так этот разный путь забей в переменную допустим path и склеивай путь и имя файла
str:=path+str
и всё
бля... ты че вопрос нормально прочитать не можешь?
Два раза он его написал, или понимаешь туго?
Есть строка, содержащая путь к проге, надо вырезать название проги...
ответ уже дали, но способ не один...
Добролго времени суток, уважаемые форумчане.
У меня проблема с POST-запросом. Страница с которой работаю - http://wen.ru/gb/?uid=1&form=1
Пишу такой код
Получаю капчу
procedure TForm1.Button2Click(Sender: TObject); var Captcha:TMemoryStream; s,CapchaID, sec_cap:string; gif : TGifImage; begin gif := TGIFImage.Create; s:=idHTTP1.Get('http://wen.ru/gb/?uid='+Edit1.Text+'&form=1'); CapchaID:=Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),pos('"',Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),15))-1); sec_cap:=(Copy(CapchaID,pos(',',CapchaID)+1,length (CapchaID)-pos(',',CapchaID)+1)); captcha:=TMemoryStream.Create; idHTTP1.Get('http://wen.ru/secure/gif.php?'+CapchaID, captcha); captcha.SaveToFile('captcha.gif'); Image1.Picture.LoadFromFile('captcha.gif'); Captcha.Free; gif.Free; end;
жму на кнопку добавить
procedure TForm1.Button1Click(Sender: TObject);
var
captcha, name, s, CapchaID, sec_cap : string;
params:tstringlist;
begin
s:=idHTTP1.Get('http://wen.ru/gb/?uid='+Edit1.Text+'&form=1');
CapchaID:=Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),pos('"',Copy(s,pos('<img src="/secure/gif.php?',s)+length('<img src="/secure/gif.php?'),15))-1);
sec_cap:=Copy(CapchaID,1, pos(',',CapchaID)-1);
captcha:=Edit2.Text;
name:=edit3.Text;
params:=TStringList.Create;
try
params.Add('author='+name);
params.Add('message='+Memo1.Lines.Text);
params.Add('tr=n');
params.Add('uid='+Edit1.Text);
params.Add('add=1');
params.Add('code='+captcha);
params.Add('cid='+sec_cap);
params.Add('lng=ru');
idhttp1.Post('http://wen.ru/gb/',params);
finally
params.free;
end;
end;
Но пост запрос почему не работает, хотя все параметры указаны верно(((( Помогите исправить пожалуйста
fastiktut
11.07.2009, 23:38
Есть свой браузер TWebBrowser нужно выловить что было введено во флэш форме, которая загружена в этот браузер, можно ли это сделать? Или другой вариант это подгружать такую же флэшку и при нажатии на нее эмитировать нажатие клавиш на клавиатуре.
Как узнать скорость интернет соединения в Delphi?
mailbrush
12.07.2009, 13:38
Регулярки + инди + один из сервисов измерения.
mailbrush
12.07.2009, 13:46
Посмотри внимательно на название темы - [B][Delphi]/[Pascal] Задай вопрос, получи ответ/B], это не Задай вопрос - получи готовую прогу. Пойми, за тебя никто ничего делать не будет.
$Atlet$, компонент IdHTTP. зайди через него на 2ip.ru и выкачай оттуда всё что нужно
fastiktut, для работы с flash используется библиотека shockwave
Здравствуйте, у меня вопрос про компонент timage.
Суть проблемы: В программе, в роли кнопоки выступает timage.
При событии MouseDown нужно, чтобы картинка менялась на, ну например другую, но уже нарисованую как нажатая, а при MouseUp всё восстанавливалось.
Это я сделал двумя способами.
1)Самым тупым
2)Лучше, но всё равно через ж...
1: Просто image1.picture.loadfromfile('pr_button.bmp');
2: var picture:tbitmap;
begin
picture:=tbitmap.create('pr_button.bmp');
image1.picture.assign(picture);end;
Это я так пытался оптимизировать работу... во многих прогах бывают такие длинные картинки, на которых собраны все рисунки. Например на тех же image кнопках.
Вот как можно сделать так-же? Я так понимаю, что они при каккомнить событии двигают этот bitmap на определённый x,y. Но как это можно сделать? Посоетуйте уже чонить...
Это выглядит примерно так:
var
img:tbitmap;
procedure TForm1.FormCreate(Sender: TObject);
begin
img := tbitmap.Create;
img.LoadFromFile('c:\1.bmp');
image1.Canvas.CopyRect(rect(1,1,80,80), img.Canvas, rect(1,1,80,80));
// 1 , 1, 80, 80 - left, top, right, bottom
// первый параметр - регион куда вставлять будем
// второй - канвас откуда будем брать данные
// третий - регион откуда будут браться данные
// изменяя третий параметр как раз и можно
// брать разне области из картинки
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// сдвигаем left и right на 80 пикселей
image1.Canvas.CopyRect(rect(1,1,80,80), img.Canvas, rect(80,1,160,80));
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
image1.Canvas.CopyRect(rect(1,1,80,80), img.Canvas, rect(1,1,80,80));
end;
velikijmerlin
13.07.2009, 14:05
доброго времени суток..))
вот решил сделать маленькую програмку..
и столкнулся с непонятками...
в общем, не могу понять почему программа странно себя ведёт с этим делом...
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Socket.ReceiveText ='Restart' then begin // åñëè ïîëó÷åíûé òåêñò = áóêâå R òî ïåðåçàãðóýàåì êîìï
// winexec(pchar('shutdown -r -f -t 02'), sw_hide);
ShowMessage('1');
serversocket1.Socket.Connections[0].SendText('Computer restarts at 2 seconds');
end;
if socket.ReceiveText = 'Shutdown' then begin // âûêëþ÷åíèå êîìïà
serversocket1.Socket.Connections[0].SendText('Computer will be shutdown at 2 seconds');
// winexec(pchar('shutdown -s -f -t 02), sw_hide);
showmessage('2');
end;
не могли подсказать в чём причина? потому что прога просто после выполнения первого условия сразу летит в конец проги и всё... ничего не происходит, а надо чтобы после первого условия(рестарта) произошло выполнение второго условия(выключение...)
помогите нубу)))
заранее спасибо...
бональная проблема со StringGrid. задача: разукрасить определённую ячейку и написать в ней текст. проблема: ячейка успешно разукрашивается, но текст в ней писаться отказывается
обработчик Drawcell
if(ACol == 4 && ARow == 3)
{
StringGrid1->Canvas->Brush->Color = clLime;
StringGrid1->Canvas->FillRect(Rect);
}
Вы хотите, чтобы шла перезагрузка и отдавалась команда на выключение одновременно? 8|
Nullsleep
14.07.2009, 09:48
-']бональная проблема со StringGrid. задача: разукрасить определённую ячейку и написать в ней текст. проблема: ячейка успешно разукрашивается, но текст в ней писаться отказывается
обработчик Drawcell
Нужно вручную прорисовывать текст с помощью TextOut на канве StringGrid'а.
if (ACol == 4 && ARow == 3)
{
StringGrid1->Canvas->Brush->Color = clLime;
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->Font->Color = clBlack;
StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top,
StringGrid1->Cells[ACol][ARow]);
}
velikijmerlin
14.07.2009, 10:51
']Вы хотите, чтобы шла перезагрузка и отдавалась команда на выключение одновременно? 8|
нет чтобы не одновременно а чтобы по нажатию кнопок...
а как тогда сделать чтобы команды шли не по очереди? :confused:
MemorieS
14.07.2009, 10:53
Помогите плиз с заданием.
Сложить блок-схему алгоритму и програму на языке Паскаль, ввести програму в память ЕВТ, отредактировать прогу, вычислить суму членов ряда
http://www.ownzone.at.ua/Lab2.jpg
Сделать анализ полученых результатов и сделать выводы.
Блок схему ты сам должен нарисовать.
Анализ - ты тоже должен сам делать.
Или ти хочешь чтобы вообще в тетрадь тебе вписали код и по почте выслали? И для этого есть спец раздел - Студентами с лабами сюда.
А пример проще некудо. советую открыть хоть почитать что такое паскаль. Иначе придется очень трудно, если ты стопоришся на элементарном.
Код такой, вроде должен работать. нет под рукой компилятора чтоб проверить
const k = 10;
var
n:integer;
s:real;
begin
s:=0;
for n:=1 to k do s:= s + sqrt(n)/sqrt(n*n*n*n + 1);
writeln('S = ', s);
end.
Проблема до сих пор акктуальна!
Вопрос по IdFTP
Не отправляется файл на FTP сервер. скачивание в пассивном режиме проходит норм. закачка нет. нет не ошибки, нихрена
IdFTP->Put("localfile.txt","inetfile.txt",false);
В чём трабл - понять не могу=((
К velikijmerlin
Может попробовать так:
case Socket.ReceiveText[1] of
'r': showmessage('r: OK | Рестарт код');
's':showmessage('s: OK | Код вырубления :)');
end;
Тут, решил сделать procedure, но столкнулся с неизвестностью:
В этой процедуре я использую компоненты разные, такие как, например, tlistbox tedit и др. Но их у меня задействовано очень много. И что-же их всёх заносить в переменные??
procedure herovina(StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; StaticText4: TStaticText; ... {и так до бесконечности});begin ... end; Или можно как-то сделать без этого. Но это еще ничего... а вот как с ней возиться при "вызове" процедуры?
velikijmerlin
14.07.2009, 16:47
to [K4t]
у меня вот такой вопрос, возможно ли сделать всё это в цикле с пост условием (repeat... until) если да, то вот как я сделал, посмотри плиз, где ошибка...
//repeat
if Socket.ReceiveText ='Restart' then begin // åñëè ïîëó÷åíûé òåêñò = áóêâå R òî ïåðåçàãðóýàåì êîìï
// winexec(pchar('shutdown -r -f -t 02'), sw_hide);
ShowMessage('1');
serversocket1.Socket.Connections[0].SendText('Computer restarts at 2 seconds');
end;
if socket.ReceiveText = 'Shutdown' then begin // âûêëþ÷åíèå êîìïà
// winexec(pchar('shutdown -s -f -t 02), sw_hide);
showmessage('2');
serversocket1.Socket.Connections[0].SendText('Computer will be shutdown at 2 seconds');
end;
if Socket.ReceiveText = 'Disconect' then begin
// ServerSocket1.Active:= false;
// KillProcess(FindWindow('Internat32',nil));
ShowMessage('3');
end;
//until serversocket1.Active = false;(пока будет получать текст, просто хз как хаписать это((( )
Nullsleep
14.07.2009, 19:13
']Тут, решил сделать procedure, но столкнулся с неизвестностью:
В этой процедуре я использую компоненты разные, такие как, например, tlistbox tedit и др. Но их у меня задействовано очень много. И что-же их всёх заносить в переменные??
procedure herovina(StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; StaticText4: TStaticText; ... {и так до бесконечности});begin ... end; Или можно как-то сделать без этого. Но это еще ничего... а вот как с ней возиться при "вызове" процедуры?
В секции private объяви свою функцию:
private
procedure herovina;
end;
Где-то в коде пиши саму функцию:
procedure TForm1.herovina;
begin
StaticText1.Caption := 'ага';
end;
Как приконектиться к MySQL которая на денвере, лежит на локалхосте. Через Delphi, кратко опишите)
Как приконектиться к MySQL которая на денвере, лежит на локалхосте. Через Delphi, кратко опишите)
http://svdpro.info/page.php?id=18
гугли вообщем
Как приконектиться к MySQL которая на денвере, лежит на локалхосте. Через Delphi, кратко опишите)
Вот видео http://www.delphiexpert.ru/view_lesson.php?id=76
zeppe1in
15.07.2009, 02:30
собственно чудеса о которых я писал на 376 странице повторяюца.
и так имеем длл.
длл загружается и запускает поток. поток 1.
у него есть локальный массив.
я передаю указатель на этот массив в функцию.
всё прекрасно всё работает).
передача указателя конпилируется вот так
LEA EAX,DWORD PTR SS:[EBP-AC]
PUSH EAX
когда же я дописываю код в процедуру треда то передача указателя превращается в
PUSH EDI а в EDI у нас 0
если дописанный код я выношу в отдельную процедуру и вызываю её из треда то всё снова начинает работать)
у меня Borland Delphi 7 Studio Enterprise если проблема в нём то что мне заюзать вместо, и какие проблемы могут быть с переносом кода?
velikijmerlin
15.07.2009, 13:49
возник такой вот вопросец...
делая прогу обнаружил что она может быть не всегда функциональна, из-за того что просто на какой то тачке не будет прав у неё...
собственно вопрос, можно ли как то дать проге права администратора не зная ни пароля ничего что могло бы вводиться в поля логин\пасс...
если такое возможно, то пожалуйста распишите что да как...
s0l_ir0n
15.07.2009, 14:20
мда. юный троедел. читай форум, тут в чуть более чем в половине (http://tinyurl.com/yrk5s2) топиков расписано как повысить права в венде
Юзаю ListBox, там несколько строк, например шелкаю два раза на вторую и мне надо чтобы в label1.caption:= записалася строка, на которую я щелкнул в листбоксе.
Юзаю ListBox, там несколько строк, например шелкаю два раза на вторую и мне надо чтобы в label1.caption:= записалася строка, на которую я щелкнул в листбоксе.
label1.caption:=listbox1.items[listbox1.itemindex];
lobzik203
17.07.2009, 18:19
Добрый день пишится флудёр на Delphi, вопрос в том как сделать его много поточным используется компонент подключение WSOCKET, надо сделать так чтоб подключалось определённое количество потоков и распределяло весь флуд поним тоесьть сначало флуит один поток затем другой затем 3 подскажите пожалста.
Nizhegorodets
17.07.2009, 23:13
Добрый день пишится флудёр на Delphi, вопрос в том как сделать его много поточным используется компонент подключение WSOCKET, надо сделать так чтоб подключалось определённое количество потоков и распределяло весь флуд поним тоесьть сначало флуит один поток затем другой затем 3 подскажите пожалста.
да кстати тоже хотел бы получить ответ на этот вопрос
Как можно получить все ссылки со страницы? юзаю компонент IdHTTP. буду выслушать любые варианты
получай исходный текст страницы.
Переводиш все буквы в строчные и там ищи типа
src*=*'LINK'
src*=*"LINK"
href*=*'LINK'
href*=*"LINK"
* - любое кол-во символов из списка - Tab, CR, LF, SpaceBar,
Можно заюзать модуль регулярных выражений.
А можно и через pos
не могбы поподробнее описать этот способ?
интересуют ссылки только с обращением к sql бд
mailbrush
18.07.2009, 15:12
Используй регулярки - очень удобно.
velikijmerlin
20.07.2009, 20:26
ребят, вопрос есть, как программно из делфи можно перевернуть Десктоп?
только варианты с копирование изображения Стола не предлагать.. хочется чтобы он оставался активным... и чтобы работало на любых картах...(желательно код)) )
поищи информацию по этой апишке function ChangeDisplaySettingsEx(lpszDeviceName: PChar; var lpDevMode: TDeviceMode;
wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint; stdcall;
BlackSilver
23.07.2009, 14:32
Через ADOConnection-ADOQuery-DataSource-DBGrid делал работу с таблицей БД в Access.
Потом поменял БД на Sybase Anywhere и при каждом изменении начала вылетать ошибка "Ошибка неизвестного типа".
Как исправить?
velikijmerlin
24.07.2009, 23:33
доброго времени суток, возникал проблемка, надо отключить клавиши Winkey на клаве.. кнопку пуск мышкой заблокировал, но она открывается чрез нажатия винкея..
формы нет, приложение консольное и скрытое...
кто что посоветует?
[n]-c0der
25.07.2009, 04:42
о фак мой мозг... пуск мышкой блокировал? До до, хэккерский способ...
Фленова начитались что ли...
SkyLine32
25.07.2009, 11:08
Привет!
Пишу на Delphi 7 довольно мало времени...
Кто может дать такой пример.
На форме есть 2 компонента TSpinEdit и TEdit.
TSpinEdit будет иметь Value от 1 до 10.
Как сделать чтобы при значении Value, рандомно генерировались числа в форме TSpinEdit...но главное чтобы если при значении к примеру 1 - генерировались числа именно в диапазоне от 0 до 9...а допустим при значении 6...была генерация в диапазоне от 000000 до 999999 ?
Вот код который делает всё что надо только кроме заданного диапазона...
if SpinEdit1.Value = 2 then randomize;
Edit1.Text:=inttostr(random(99));
Тесть random(99) будет колебаться и от 0 до 9, что мне и не надо...
Уже кучу времени убил и так и не смог сделать сам :(
Nullsleep
25.07.2009, 14:14
SkyLine32
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
s: string;
begin
if SpinEdit1.Value < 1 then Exit;
Randomize;
for i := 1 to SpinEdit1.Value do s := s + '9';
Edit1.Text := IntToStr(Random(StrToInt(s)));
end;
SkyLine32
25.07.2009, 19:01
Nullsleep,
спасибо за решение, но всё равно если поставить Value 3 к примеру то примерно раз из 5 проскакивает двузначные числа.
ZdezBilYa
25.07.2009, 19:38
Randomize;
z:=1;
for i := 1 to SpinEdit1.Value do
begin
s := s + '9';
z:=z*10;
end;
z:=z div 10;
Edit1.Text := IntToStr(Random(StrToInt(s)-z)+z);
Для velikijmerlin: попробуй поискать информацию про "глобальные хуки". Вроде как нажатие клавиш отлавливает. По принципу Кейлогера.
Здравствуйте, есть вопрос про указатель ввода. Необходимо, чтобы, например, при событии onChange в TEdit указатель устанавливался на самый последний символ. От этого нужно, чтоб при Edit1.SetFocus; но при СэтФокус, естественно, он становится вначало... Можно ли такое вообще организовать?
procedure TForm1.Edit1Change(Sender: TObject);
begin
Edit1.SelStart := Length(Edit1.text);
end;
Для slesh: вот спасибо, только сделал не на onChange, а на onKeyPress. Просто делаю, фильтр символов. Нужны только числа, ну и с минусом проблемы начались. Вот, и мне показалось, что так будет намного легче... +++
Нужно сделать примерно так:
(Код на руском языке) :)
Делать пока в мемо есть строчки
---
эдит1.текст = 1 строчка мемо
удалить первую строчку мемо
---
То что между --- надо делать пока в мемо есть строчки...
фильтрация тут простая:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','-',#8]) then key := #0;
end;
#8 - это код бекспейса. Это для того чтобы можно было бы стереть символ.
Ну и можно еще добавить туда символ точки или зяпятой чтобы можно былобы вводить еще и дробные числа
Nightmarе
28.07.2009, 01:32
В общем такой вопрос, надо скрипту отправить файл на WinInet (именно через WinInet)
Я использую функцию:
procedure SendPOSTData(const szHost, szPath, szData,header: PChar);
var
szHeaders: PChar;
hOpenHandle,
hConnectHandle,
hResourceHandle: Pointer;
ListBox1:tListBox;
begin
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle, szHost,80,nil,nil,3,0,0);
if hConnectHandle <> nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle,'POST',szPath,nil,n il,nil,INTERNET_FLAG_KEEP_CONNECTION,0);
if hResourceHandle <> nil then
begin
HttpSendRequest(hResourceHandle,header,47,szData,l strlen(szData));
end;
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end;
То есть первый параметр это хост, второй это путь до скрипта, третий это POST дата, а четвёртый это заголовок.
Вызываю функцию так:
SendPOSTData('site.fr','/index.php',PChar(memo1.text),PChar(memo2.text));
А теперь самое интересное, в memo2 я вставляю заголовок:
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------235351862919679
Ну а в POST (memo1) я вставляю это:
-----------------------------235351862919679
Content-Disposition: form-data; name="userfile"; filename="test.txt"
Content-Type: text/plain
LOL
-----------------------------235351862919679--
В итоге файл не заливается.
name="userfile"; указанно правильно (на скрипте так приём файла обозначен).
Вроде бы в коде всё правильно, заголовки и POST дату я указал так как нужно, величину контента функция потсчитывает автоматом.
Подскажите плиз где тут ошибка? Может я что то забыл указать в заголовке или POST запросе?
Joker-jar
28.07.2009, 05:03
Хидер host нужно указать, может достаточно будет
Nightmarе
28.07.2009, 05:11
Хидер host нужно указать, может достаточно будет
Так он уже указан в функции.
Обычные POST запросы вида:
lol1=1&lol2=2
нормально работают, а вот передать файл никак не удаётся.
так файлы кидаются через мультипарт форму где всё оформляется по другому.
Еще были ошибки в коде - не в том месте закрывались хендлы.
Проводим простой следственный эксперимент.
Берем PHP файл через который будем грузить чтонить
<form action="?act=upload" method="POST" enctype="multipart/form-data">
<input type="text" name="info">
<input type="file" name="myfile">
<input type="submit" value="UPLOAD">
</form>
<?
if ($_GET['act'] == 'upload')
{
$name = $_FILES['myfile']['name'];
$myfile=$_FILES['myfile']['tmp_name'];
if (!file_exists($myfile))
{
echo '<h3>Error</h3>';
}
else
{
Copy($myfile, $name);
echo "<h3>OK</h3><br>{$_POST['info']}";
}
}
?>
Через снифер получаем данные:
POST /1.php?act=upload HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9) Gecko/2008052906 Firefox/3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/1.php
Content-Type: multipart/form-data; boundary=---------------------------41184676334
Content-Length: 769
-----------------------------41184676334
Content-Disposition: form-data; name="info"
infodata
-----------------------------41184676334
Content-Disposition: form-data; name="myfile"; filename="test.txt"
Content-Type: text/plain
this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file this is test file
-----------------------------41184676334--
Теперь на основании этих данных очень просто построить запрос.
procedure TForm1.Button1Click(Sender: TObject);
var
hOpenHandle, hConnectHandle, hResourceHandle: Pointer;
boundary:string;
header, data:string;
begin
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle, '127.0.0.1', 80, nil, nil, 3, 0, 0);
if hConnectHandle <> nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle, 'POST', '/1.php?act=upload', nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, 0);
if hResourceHandle <> nil then
begin
boundary := inttostr(random(65355))+inttostr(random(65355))+in ttostr(random(65355));
header := 'Content-Type: multipart/form-data; boundary='+boundary;
data := '--'+boundary+#13#10+
'Content-Disposition: form-data; name="info"'#13#10#13#10+edit1.Text+#13#10+
'--'+boundary+#13#10+
'Content-Disposition: form-data; name="myfile"; filename="test.txt"'#13#10+
'Content-Type: text/plain'#13#10#13#10+memo1.Text+#13#10+
'--'+boundary+'--';
HttpSendRequest(hResourceHandle, @header[1], length(header), @data[1], length(data));
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end;
end;
P.S. вот у тебя функция
HttpSendRequest(hResourceHandle,header,47,szData,l strlen(szData));
47 - это длинна хидера которую ты вбил ручками, а нужно вычеслять её, потому как хидер может быть разной длинный у тебя. Еслибы заюзал снифер для просмотра того, что шлёт твой код, то сразу бы увидел это бажное место.
http://s12.radikal.ru/i185/0907/71/2ace84f0fa58.jpg
Всем советую классный видео курс сам с него начинал
http://pascal-video-kurs.narod.ru/
Nullsleep
28.07.2009, 12:43
Спамер детектед
Как в RichEdit найти текст между двух кусков текста? И вставить ево в переменную?
пс, Гугол не помог
Nullsleep
28.07.2009, 15:33
"между двух кусков текста" - это как ?
"между двух кусков текста" - это как ?
<input type="hidden" name="s" value="614750171334344540111">
Надо скопировать: 614750171334344540111
То есть - От: <input type="hidden" name="s" value=" До ">
И эти цифры загнать в переменную1...
var
s,z:string;
START_TEXT:string;
STOP_TEXT:string;
p:integer;
begin
z := '';
s := RichEdit1.text;
START_TEXT := 'value="';
STOP_TEXT := '"';
p := pos(START_TEXT, s);
if (p > 0) then
begin
delete(s, 1, p + length(START_TEXT) - 1);
p := pos(STOP_TEXT, s);
if (p > 0) then
begin
z := copy(s, 1, p - 1);
showmessage(z);
end;
end;
примерно так в твоём случае
Как в RichEdit найти текст между двух кусков текста? И вставить ево в переменную?
Юзай регулярки.
Есть такой способ отправки запроса на сервак:
procedure TForm5.btn1Click(Sender: TObject);
var params,responseres:tstringlist;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
params.Add('Login=1');
params.Add('pass=2');
params.Add('url=3');
responseres.Text:=http1.Post('Хост',params);
Так вот, есть пару вопросов:
1) Как можно изменить уже внесенный параметр (Например логин)
2) Если вписать RUS буквы то они не дойдут до сервака а тока в виде "%5", и т.д. , Как можно сделать так чтобы русские буква доходили до сервака?
читай RFC по http. И там указан набор символов который кодируется.
И русские подпадают под него. Так что как не крути, но они всё равно переконвертятся в %XX
читай RFC по http. И там указан набор символов который кодируется.
И русские подпадают под него. Так что как не крути, но они всё равно переконвертятся в %XX
Ок, щя глянем, а как на счет параметров?
вот моя статья (http://chukey.hut1.ru/?path=articles&id=gate2) про отправку файлов на сервак тока на winsocke
Nightmarе
29.07.2009, 03:09
Ещё вопрос, как заставить функцию InternetReadFile (WinInet) записывать данные в тип TStrings ??
Вот функция:
procedure SendPOSTData(const szHost, szPath, szData: PChar; FileList: TStrings);
var
szHeaders: PChar;
hOpenHandle,
hConnectHandle,
hResourceHandle: Pointer;
BufferLen: DWORD;
begin
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle, szHost,80,nil,nil,3,0,0);
if hConnectHandle <> nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle,'POST',szPath,nil,n il,nil,INTERNET_FLAG_KEEP_CONNECTION,0);
if hResourceHandle <> nil then
begin
HttpSendRequest(hResourceHandle,'Content-Type: application/x-www-form-urlencoded',47,szData,lstrlen(szData));
InternetReadFile(hResourceHandle,Pchar(@FileList), SizeOf(FileList), BufferLen);
end;
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end;
Вызываю так:
SendPOSTData('lol.fr','/alladin.php', 'age=ass',memo1.Lines);
И в memo пусто. Стало быть и FileList: TStrings пустой. Так как тогда в TStrings сделать правильную запись?
Столкнулся с такой проблемой:
Есть целое число (Integer), число примерно: 407661516164772012300 (21 цифра)
При попытки перевода числа в строчку (IntToStr()), оно не переводится т.к. МАХ число для перевода в строчку = 2147483647
Так вот вопрос как можно разделить целое число на: Первые 9 цифр, вторые 9 цифр, остальные цифры...
Ну а потом можно 3 части перевести в строку и "Приписывать" цифры....
Nullsleep
29.07.2009, 07:00
Тут лучше юзать массивы. Гугли "длинную арифметику"
s0l_ir0n
29.07.2009, 09:06
Столкнулся с такой проблемой:
Есть целое число (Integer), число примерно: 407661516164772012300 (21 цифра)
При попытки перевода числа в строчку (IntToStr()), оно не переводится т.к. МАХ число для перевода в строчку = 2147483647
Так вот вопрос как можно разделить целое число на: Первые 9 цифр, вторые 9 цифр, остальные цифры...
Ну а потом можно 3 части перевести в строку и "Приписывать" цифры....
Советую использовать FGint (http://www.submanifold.be/triade/GInt/gint.html), используется очень просто, работает довольно шустро и с очень большими числами
Fast Gigantic Integers, the size of these integers is merely bounded by the available memory.
2 Nightmarе ну так ты читай в буфер, а затем его прибавляй к TStrings_TYPE.text
2 НTL ну если дело на то пошло, то 407661516164772012300 - не влезит в integer.
потому как
Integer от -2147483648 до 2147483647
тебе даже real и Extended не подойдет
Так что считывай всё это в строку, из неё через copy выдериш ружные части, нужного размера и спокойно преобразуешь в integer.
Когдато приходилось писать алгоритмы(умножение, сумирование итд итп) для работы с числами занимаемыми в памяти - 1 мегобайт. - вот это здец было.
Когда число порядка - 2^100 000 000 нужно было умножить на такое же. - тут без асма необойтись было. И даже строки и массивы не помогалибы потому что расчетов бы я ждал несколько дней бы. А так за 5-6 минут считало.
Так что всё зависит от конкретной цели. ты скажу что именно ты пишешь и что именно надо, мож что посоветуем.
s0l_ir0n
29.07.2009, 10:23
если мне не изменяет память, Daemon666 с краклаба написал прогу на питоне, которая перемножала 16 мегобайтовые числа за 40-50 минут О_о (это какбе тонкий намек на то, что делфи не особо подходит для больших и быстрых вычислений)
намек не правильный, потому как питон не может работать быстрее чем машинный код.
Если правильно написать алгоритм, то в виде машинного кода он будет выполняться в сотни раз быстрее чем на языках типа perl/php/python
Также зависит от компа на котором тестилось. я тогда тестил на 2,6 ггц пне одноядерном
Люди, а как с помощью делфи сделать перевод десятичных чисел в другие системы исчисления?
вот тут есть перевод в разные системы счисления (http://www.kansoftware.ru/?tid=4616)
Вопрос новичка:
Закинул я на форму объекты (Кнопки, мемо, этиты)
Теперь я хочу эти объекты закинуть в GroupBox1
Как это можно реализовать,
Создать новые объекты - не врянт...
Nullsleep
29.07.2009, 16:31
HTL, выделяешь нужные компоненты, жмешь Ctrl + X, щелкаешь на GroupBox и Ctrl + V.
В Objekt TreeView выделяешь эти объекты и переносишь их на название GroupBox1.
<?
$ip=getenv("REMOTE_ADDR"); #айпишник компа с которого пришел отчет
$dirname = "logs/"; #папка куда будут складываться отчеты
if(!file_exists($dirname)){ #если нету паки, создаем
mkdir($dirname, 0777, true); #ставим права доступа
}
$name =$dirname.$_FILES['myfile']['name']; #составляем имя файла папка/время/[айпишник]/имя файла которое было на компе
$filegate=@$_FILES['myfile']['tmp_name']; #пока идет закачка дается временное имя
if (!empty($filegate))
{
move_uploaded_file($filegate,$name); #все складваем в лог папку
echo "okkk";
}
?>
procedure sendpost(host,pathscript,filename:string);
var
hOpenHandle, hConnectHandle, hResourceHandle: Pointer;
boundary:string;
header, data:string;
fhand: THandle;
fBuffer: pchar;
fhFileSize,BytesRead: dword;
bound:string;
namefile:string;
begin
fhand := CreateFile(pchar(filename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
fhFileSize:= GetFileSize(fhand,nil);
GetMem(fBuffer, fhFileSize);
ReadFile(fhand, fBuffer^, fhFileSize, BytesRead, nil);
closehandle(fhand);
bound:=
chr(65+random(25))+chr(97+random(25))+chr(48+rando m(9))
+chr(97+random(25))+chr(65+random(25))+chr(48+rand om(9))
+chr(97+random(25))+chr(97+random(25))+chr(48+rand om(9))
+chr(65+random(25))+chr(48+random(9))+chr(97+rando m(25))
+chr(65+random(25))+chr(48+random(9))+chr(97+rando m(25))
+chr(48+random(9))+chr(97+random(25))+chr(48+rando m(9))
+chr(65+random(25))+chr(97+random(25))+chr(65+rand om(25))+chr(97+random(25));
namefile:=extractfilename(filename);
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle, pchar(host), 80, nil, nil, 3, 0, 0);
if hConnectHandle <> nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle, 'POST', pchar(pathscript), nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, 0);
if hResourceHandle <> nil then
begin
boundary := inttostr(random(65355))+inttostr(random(65355))+in ttostr(random(65355));
header := 'Content-Type: multipart/form-data; boundary=----------'+bound;
data := '------------'+bound+#13#10+
'Content-Disposition: form-data; name="info"'#13#10#13#10+'dfgdfgdfgdfg'+#13#10+
'------------'+bound+#13#10+
'Content-Disposition: form-data; name="myfile"; filename="'+namefile+'"'#13#10+
'Content-Type: text/plain'#13#10#13#10+fBuffer+#13#10+
'------------'+bound+'--';
HttpSendRequest(hResourceHandle, @header[1], length(header), @data[1], length(data));
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.execute
then
sendpost('test.ru', '/test.php',opendialog1.FileName);
end;
чтото я не вкурил, это к чему код?
Склеен кое как из моего куска и еще чегото. Куча левых, неиспользуемых строк.
+ комменты для php файла чуть неправильны )
отправляет текстовый файл на сервак)) как бинарный кидать через вининет не разобрался... а php не обращай внимания, главное работает, принимает и ладно))...
Nightmarе
29.07.2009, 20:52
отправляет текстовый файл на сервак)) как бинарный кидать через вининет не разобрался... а php не обращай внимания, главное работает, принимает и ладно))...
Бинарные файлы надо перегонять через эту хуёвину:
procedure GetBuff(var Text: string; FileName: string);
var
F: File of Byte;
B: Byte;
begin
AssignFile(F, FileName);
Reset(F);
while not Eof(F) do
begin
Read(F, B);
Text := Text + chr(B);
end;
Close(F);
end;
А дальше в функции POST добавляешь:
в var: texet:string;
а в код:
GetBuff(texet, 'C:\lol.jpg');
ну и вместо memo1.text вставляешь texet
http://s52.radikal.ru/i136/0907/2f/cf3dc957b63bt.jpg (http://radikal.ru/F/s52.radikal.ru/i136/0907/2f/cf3dc957b63b.jpg.html)
http://s55.radikal.ru/i150/0907/ae/bd01e218b77bt.jpg (http://radikal.ru/F/s55.radikal.ru/i150/0907/ae/bd01e218b77b.jpg.html)
http://s51.radikal.ru/i132/0907/bf/e847445fb8ddt.jpg (http://radikal.ru/F/s51.radikal.ru/i132/0907/bf/e847445fb8dd.jpg.html)
http://s48.radikal.ru/i121/0907/d6/950595caaeedt.jpg (http://radikal.ru/F/s48.radikal.ru/i121/0907/d6/950595caaeed.jpg.html)
http://s54.radikal.ru/i146/0907/43/e7f69e8dffc4t.jpg (http://radikal.ru/F/s54.radikal.ru/i146/0907/43/e7f69e8dffc4.jpg.html)
подскажите что за ошибки
ZdezBilYa
30.07.2009, 03:13
подскажите что за ошибки
Не найдены свойства компонент. Версии другие?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot