Просмотр полной версии : [Delphi]/[Pascal] Задай вопрос, получи ответ
А как создать такое событие что бы оно происходило как только в Listbox добавится 2 записиси.
Или событие которое происходило бы если переменая стала true;
GhostOnline
14.03.2010, 10:32
if Assigned(FOnDenjf) then Копмилятор говорит что не знает FOnDenjf
Если компилер говорит что не знает, значит он не знает.
Я так понял это потому что я сделал в отдельном классе, как мне создать событие в класе TMain?
Так, как показано выше.
Попытался
в public получается 2 строчки
procedure OnDenjf(Sender: TObject);
property OnDenjf: TNotifyEvent read FOnDenjf write FOnDenjf;
Сразу ругается на них.
Ну конечно, ты повторно используешь один идентификатор.
Ты объявляешь 2 члена класса с одним именем, свойство и процедуру.
GhostOnline
14.03.2010, 11:16
Вот этот модуль поможет тебе разобраться с событиями, все комментировано и разжевано. Создай гуи-проект и замени код на этот
unit Unit1; interface uses Classes, Forms, StdCtrls, Controls; type {Вот смотри, это класс у которого будет событие Допустим что наш класс должен будет складывать числа а событие допусим будет возникать когда сумма меньше нуля} TMain = class private {Это поле-событие, тут мы указываем тип TNotifyEvent но можно использовать и свои} FOnDenjf: TNotifyEvent; public {Объявляем свойство-событие в разделе паблик, чтобы событие можно было использовать извне} property OnDenjf: TNotifyEvent read FOnDenjf write FOnDenjf; {Собственно метод класса в котором будет генериться событие } function Sum(a, b : Integer): Integer; // end; {Теперь пример использования нашего класса извне Допустим у нас есть клас формы TForm1 с компонентом Label1 Мы знаем что событие генериться когда сумма меньше нуля и используем это знание чтобы оповестить пользователя об этом Тогда ввведем в класс формы процедуру с такими же аргументами как и у типа TNotifyEvent} TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Test(sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TMain } {Реализация метода и генрация события} function TMain.Sum(a, b : Integer): Integer; begin result := a + b; {проверяем результат и если он меньше нуля то генерим событие} if (result < 0) and (assigned(FOnDEnjf)) then FOnDenjf(self); end; {Применение} procedure TForm1.Button1Click(sender: TObject); var Main: TMain; begin Main := TMain.Create; Main.OnDenjf := Test; {Вот тут пробуй подставлять разные значения чтобы убедитьься что все работает} Main.Sum(3, -4); Main.Free; end; procedure TForm1.Test(sender: TObject); begin Label1.Caption := 'Сумма меньше нуля!!!'; end; end.
LostZero
14.03.2010, 23:03
Нужно скласть программу на Паскале для построения массива с 12 елементами a=4sin3i , и вычисления среднеарифметического значения елементов которые больше за -1, и меньше чем 1.
ХЕЛП!)
fenixelite
14.03.2010, 23:15
a - это элемент? i, я так понимаю счетчик? Скобка где будет : a=4*sin(3)*i или a=4*sin(3*i) ?
LostZero
14.03.2010, 23:28
да) i - должна быть подстрочным знаком в буквы а, и в цифре 3
типа маленькая буква (і) написана возле троечки)
и возле а тоже маленькая буква (і) есть. (внизу)
fenixelite
15.03.2010, 06:58
Поподробнее напиши, а то я че то, кроме того что в массиве 12 элементов, заданных формулой, ничего не понял..
[stranger]
15.03.2010, 11:54
выложите delphi3 у кого есть, пожалуйста!
s0l_ir0n
15.03.2010, 12:04
']выложите delphi3 у кого есть, пожалуйста!
http://snowy.ifolder.ru/3257180
[stranger]
15.03.2010, 15:04
http://snowy.ifolder.ru/3257180
я этот уже качал!
он не ставится.. если у тебя получилось поставить залей куда-то компилер оттуда.
а)Помогите плиз написать прогу на паскале чтобы можно было в одномерном массиве изменить порядок следования элементов.
б)И написать программу подсчета количества элементов, попадающих между номером минимального элемента и максимального элемента в массиве из 30 чисел.
EndLeSSDre@M
15.03.2010, 18:37
а) не совсем понял.. как нужно что бы элементы находились?? просто в обратном порядке??? или рандомом?
б) между минимальным элементом и каким еще то???
а) не совсем понял.. как нужно что бы элементы находились?? просто в обратном порядке??? или рандомом?
б) между минимальным элементом и каким еще то???
а) типо 123 а выводилось 321
б)поправил
EndLeSSDre@M
15.03.2010, 18:48
это для первой задачи
program asdf;
const n=10;
a:array[1..n] of integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
writeln('Ishodniy massive');
for i:=1 to n do
write(a[i], ' ');
writeln;
writeln('Rezultat');
for i:=n downto 1 do
write(a[i], ' ');
writeln;
readln;
end.
Это для 2
program asdf;
const n=30;
a:array[1..n] of integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
X := 1;
N := A[X];
for i:=1 to n do
If N < A[I] Then
Begin
X := I;
N := A[X];
K=i
End;
X := 1;
N := A[X];
for i:=1 to n do
If N > A[I] Then
Begin
X := I;
N := A[X];
L=i
End;
for i=K to L do
write(a[i], ' ');
writeln;
readln;
end.
это для первой задачи
writeln('Rezultat');
for i:=n to 1 do
write(a[i], ' ');
writeln;
readln;
end.
скорее for i:=n downto 1 do
EndLeSSDre@M..Вы когда пишете код к программе хотя бы тестите его?! И прочитайте внимательнее какое задание было. Без обид, но вы такую байду выложили
MaTpOc...вот код ко второй задаче
{$APPTYPE CONSOLE}
const
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
min:=maxlongint;
max:=-min;
for i:=1 to n do
begin
read(a[i]);
if a[i] > max then // нахождение максимального
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then // нахождение минимального
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
И уточните один момент, первого макс/мин или последнего в массиве?
EndLeSSDre@M
15.03.2010, 20:40
а блин точно... просто не вчитался... вывел эти элементы, надо было количество... сорри!
п.с. я больше бэйсик знаю, потом просто под паскаль переделываю. 2Soherox спасибо за корректировку
[stranger]
15.03.2010, 22:56
нужен код на winapi для архивации папок/файлов.. zlib не предлагать!
LostZero
15.03.2010, 23:25
помогите с задачами)))
задачи на украинском языке)))
1. Складіть програму для побудови масиву з дванадцятьма елементами ai=4sin3i і обчислення середньоарифметичного значення елементів більших, ніж -1 і менших ніж 1.
2. Оголосіть сталий масив з назвами трьох фірм, і сталий масив з трьома будь-якими числовими даними, що характеризують їхню діяльність.
[stranger]
15.03.2010, 23:34
ai=4sin3i
что такое последняя "i"?
2) firm: array[0..2] of string;
dej: array[0..2] of integer;
...
firm[0] := "firm1";
firm[1] := "firm2";
firm[2] := "firm3";
dej[0] := 123;
dej[1] := 234;
dej[2] := 345;
так что ли?
']что такое последняя "i"?
Как я понял он имел ввиду a[i]=4*sin(3*i)
по выше сказанному способу "a[i]=4*sin(3*i)" вот код
{$APPTYPE CONSOLE}
type
real = extended;
const
n = 12;
var
i, kol: integer;
b: array [1..n] of real;
rez: real;
begin
kol:=0;
for i:=1 to n do
begin
b[i]:=4*sin(3*i*pi/180);
if (b[i] > -1) and (b[i] < 1) then
begin
inc(kol);
rez:=rez + b[i];
end;
end;
for i:=1 to n do write(b[i]:0:3,' '); // элементы массива
writeln;
write (rez / kol:0:3);
readln;
end.
Прветствую.
у муня ткой вопрос. нужно на delphi написать прогу, могущую подрубиться к wi fi точке DWL-3200AP. проблема в незнании как это реализовать.
alexey-m
16.03.2010, 11:43
']нужен код на winapi для архивации папок/файлов.. zlib не предлагать!
Вот юнит (http://www.opensc.ws/unsorted/2778-ntcompress-unit.html), в котором показан пример сжатия файла и памяти с помощью функций из ntdll.dll
[stranger]
16.03.2010, 11:58
спасибо! хорошая либа..
но мне архивация нужна не для уменьшения размера, а для того чтоб собрать множество мелких файлов в один.. :)
Добрый день, мне очень срочно нужны ответы на пару вопросов...
1) Мне нужно чтобы при на жатии на кнопку на label выводился определенный текст (Это я сделал, не такой уж нуб), Но мне надо чтобы при втором нажатии на эту кнопку появлялся второй текст вместо прежнего, либо как сделать чтобы при нажатии на кнопку выводился текст а потом эта кнопочка удалялась и вместо нее появлялась другая кнопочка при нажатии на которую уже появлялся второй текст
2) Как сделать чтобы при нажатии на кнопку открывалось еще одна форма (окно)
и закрывалось старое.
alexey-m
16.03.2010, 15:42
']спасибо! хорошая либа..
но мне архивация нужна не для уменьшения размера, а для того чтоб собрать множество мелких файлов в один.. :)
А что тебе мешает записать все файлы в один?... ничего сложного в этом не вижу, сделай таблицу с указателями на файлы в едином 'архиве' или что нибудь подобное, вариации много)
hidden0123
16.03.2010, 16:25
Как осуществить загрузку файла на например на dump.ru?
Помогите плз
Добрый день, мне очень срочно нужны ответы на пару вопросов...
1) Мне нужно чтобы при на жатии на кнопку на label выводился определенный текст (Это я сделал, не такой уж нуб), Но мне надо чтобы при втором нажатии на эту кнопку появлялся второй текст вместо прежнего, либо как сделать чтобы при нажатии на кнопку выводился текст а потом эта кнопочка удалялась и вместо нее появлялась другая кнопочка при нажатии на которую уже появлялся второй текст
2) Как сделать чтобы при нажатии на кнопку открывалось еще одна форма (окно)
и закрывалось старое.
1)
Проверяй какой текст написан в label например так:
if label1.caption='текст 1' then
label1.caption:='текст 2'
2)
Создаёшь вторую форму file->new->form
Кидаешь кнопку и пишешь:
Form1.hide;
Form2.show;
1)
Проверяй какой текст написан в label например так:
if label1.caption='текст 1' then
label1.caption:='текст 2'
2)
Создаёшь вторую форму file->new->form
Кидаешь кнопку и пишешь:
Form1.hide;
Form2.show;
А я сделал по другому, я сделал примерно так:
Button1.Visible := False
Button2.Visible := True
Ну понятно изночально поставил у второй нивидимость=) И сделал чтобы когда на вторую жмякаешь уже второй текст выводился, Мне это первое в голову пришло так и сделал все получилось=) Вообще пытаюсь сделать чтото типо Книги мне возможно зачтут это за ЕГЭ а это ведь халявный экзамен из четырех я ваще буду очень рад если мне это зачтут, да и собираюсь на программиста думаю это тоже будет полезно в будущем...
Как TStringList перевести в String с разделителем #13#10?
GhostOnline
16.03.2010, 21:27
если имеем такие строки:
StringList.Add('1');
StringList.Add('12');
StringList.Add('123');
то свойство StringList.Text будет равно '1#13#1012#13#10123#13#10'
а свойство StringList.CommaText '1,12,123'
fenixelite
16.03.2010, 23:16
Подкиньте парочку ссылкой, про стэк и кучу, пожалуйста.
s0l_ir0n
17.03.2010, 07:34
Подкиньте парочку ссылкой, про стэк и кучу, пожалуйста.
http://www.delphisources.ru/pages/faq/base/manage_segment_data_size.html
http://forum.sources.ru/index.php?showtopic=280746
http://www.xakep.ru/magazine/xa/114/050/1.asp
http://articles.org.ru/cn/showdetail.php?cid=7342
http://delphi.about.com/od/objectpascalide/l/aa103003a.htm
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_10354858.html
хочу добавить в базу данные
SQLConnection1.Connected:=true;
SimpleDataSet1.DataSet.CommandText:='INSERT INTO users ("id","name","fname","email","pass") values ("","'+Edit1.Text+'","'+Edit2.Text+'","'+Edit3.Text+'","'+Edit4.Text+'")';
SimpleDataSet1.DataSet.Active:=true;
SimpleDataSet1.Active:=true;
что не правельно?
Уважаемые мемберы может ктонибудь показать на примере как скачать и выполнить файл использую для скачивания только winsocks ??
у меня что то не выходит =((
WSAStartup(makeword(1,1),info);
sHwnd:=Socket(AF_INET, SOCK_STREAM, 0);
sin.sin_family:=AF_INET;
sin.sin_port:=htons(dport);
sin.sin_addr.S_addr:=inet_addr(dhost);
connect(sHwnd, sin, sizeof(sin));
sbuff1 := '';
sbuff1 := 'GET ' + dpath + '? HTTP/1.1'+ #13#10 +
'Host: ' + dhost + #13#10#13#10;
CopyMemory(@sBuff,pchar(sBuff1),length(sBuff1));
send(sHwnd, sBuff, Length(sBuff), 0);
recv(sHwnd, rBuff, Length(rBuff), 0);
fileText := copy(rBuff, pos(#13#10#13#10, rBuff)+4, length(rBuff)-pos(#13#10#13#10, rBuff));
SaveFile(SavePath, fileText);
zer0ska, вот слушай, когда сервер тебе отвечает он тебе посылает свои хеддеры в которых указан размер данных (в символах)(Content-Length), вот его считываешь и потом постепенно принимаешь символы от сервера (т.е. ответ от сервера)(while цикл тебе поможет)
Это все не сложно делается!
zer0ska, вот слушай, когда сервер тебе отвечает он тебе посылает свои хеддеры в которых указан размер данных (в символах)(Content-Length), вот его считываешь и потом постепенно принимаешь символы от сервера (т.е. ответ от сервера)(while цикл тебе поможет)
Это все не сложно делается!
это я понел но реализовать чстно говоря не знаю как =)
с while for знаком но не выходит что то =((
Помогите написать программу подсчета количества элементов, попадающих между номером минимального элемента и максимального элемента в массиве из 30 чисел.
[stranger]
17.03.2010, 21:44
Помогите написать программу подсчета количества элементов, попадающих между номером минимального элемента и максимального элемента в массиве из 30 чисел.
отнимай одно от другого по модулю..
EndLeSSDre@M
17.03.2010, 21:47
MaTpOc вот точный код программы! сорри что сразу норм не написал... спасибо Soherox
const
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
max:=a[1];
min:=a[1];
for i:=1 to n do
begin
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
fenixelite
17.03.2010, 21:52
Блин не успел свое запостить ((
EndLeSSDre@M, а зачем два раза массив заполнять, в 1 и во 2 цикле?
EndLeSSDre@M
17.03.2010, 21:54
Блин не успел свое запостить ((
EndLeSSDre@M, а зачем два раза массив заполнять, в 1 и во 2 цикле?
оп))) опять скосячил))) спасибо)
fenixelite
17.03.2010, 22:04
EndLeSSDre@M, незачто )) Мы с тобой вообще одинаково сделали, ток переменные разные ))
MaTpOc вот точный код программы! сорри что сразу норм не написал... спасибо Soherox
const
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
max:=a[1];
min:=a[1];
for i:=1 to n do
begin
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
не выводит кол-во
Помогите написать программу подсчета количества элементов, попадающих между номером минимального элемента и максимального элемента в массиве из 30 чисел.
Так код уже выкладывался страница 578, #5772 (https://forum.antichat.ru/threadnav39636-578-10.html) :D
fenixelite
17.03.2010, 22:09
Поправь abs(imax-imin)-1
Поправь abs(imax-imin)-1
А разница? abs(imax-imin) = abs(imin-imax), abs это модуль :p
Так код уже выкладывался страница 578, #5772 (https://forum.antichat.ru/threadnav39636-578-10.html) :D
не работает (
ошибка там
EndLeSSDre@M
17.03.2010, 22:14
вот кароче так попробуй
const
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
n=abs(imin - imax) - 1
if n=0 then writeln('0')
else writeln(n);
readln;
end.
Цитата:
Сообщение от Soherox
Так код уже выкладывался страница 578, #5772
не работает (
ошибка там
Приношу извинения, писал на Delphi, поэтому ошибка, все исправил для Pascal
const
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: longint;
begin
min:=maxlongint;
max:=-min;
for i:=1 to n do
begin
read(a[i]);
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
fenixelite
17.03.2010, 22:24
Soherox, блин и как я не заметил, что n это константа??? :(
Приношу извинения, писал на Delphi, поэтому ошибка, все исправил для Pascal
const
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: longint;
begin
min:=maxlongint;
max:=-min;
for i:=1 to n do
begin
read(a[i]);
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
неизвестный maxlongint;
fenixelite
17.03.2010, 22:27
На исправь longint на integer. Там все равно числа позволяют
MaTpOc...а теперь, вопрос, на каком Паскале Вы кодите? =) В Turbo Pascal ошибки не должно быть
На исправь longint на integer. Там все равно числа позволяют
const
n = 5;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
min:=max;
max:=-min;
for i:=1 to n do
begin
read(a[i]);
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
я так поправил, вроде все ок, но выдает из 5элементов что 4 находятся между макс и мин...
MaTpOc...а теперь, вопрос, на каком Паскале Вы кодите? =) В Turbo Pascal ошибки не должно быть
PascalABC, пока нашел только отличие в названии, тут название можно и не делать...
EndLeSSDre@M
17.03.2010, 22:35
кароче............... вот........
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
k=abs(imin - imax) - 1
if n=0 then writeln('0')
else writeln(k);
readln;
end.
кароче............... вот........
n = 30;
var
a: array [1..n] of integer;
i, imax, imin, max, min: integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
k=abs(imin - imax) - 1
if n=0 then writeln('0')
else writeln(k);
readln;
end.
const
n = 5;
var
a: array [1..n] of integer;
i, imax, imin, max, min,k: integer;
begin
writeln('Zapolnite massive');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
k:=abs(imin - imax)-1;
if n=0 then writeln('0')
else writeln(k);
readln;
end.
поправил и заработало, но опять же между 1..5 кол-во элементов 3( 2 3 4) а не 4 как выдает прога (
а да емеае, воотка
const
n = 5;
var
a: array [1..n] of longint;
i, imax, imin, max, min: longint;
begin
min:=21474836;
max:=-min;
for i:=1 to n do
begin
read(a[i]);
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
если и сейчас скажешь что не работает, прибью :D
EndLeSSDre@M
17.03.2010, 22:47
min:=21474836;
max:=-min;
по правилам программирования нельзя даже с 0 сравнивать)))) можно только с элементами массива!
а да емеае, воотка
const
n = 5;
var
a: array [1..n] of longint;
i, imax, imin, max, min: longint;
begin
min:=21474836;
max:=-min;
for i:=1 to n do
begin
read(a[i]);
if a[i] > max then
begin
imax:=i;
max:=a[i];
end;
if a[i] < min then
begin
imin:=i;
min:=a[i];
end;
end;
if imin = imax then write('0')
else write(abs(imin - imax) - 1);
readln;
end.
если и сейчас скажешь что не работает, прибью :D
во так супер)
спасибо, всем кто помогал + поставлю)))
только что такое longint и почему min:=21474836; ???
EndLeSSDre@M...ахахах..и кто интересно придумал эти правила)))))) ну ты насмешил меня дружище))) в данной задаче можно все что угодно, ибо автором не было написано какие ограничения на элементы массива
fenixelite
17.03.2010, 22:53
Longint - тип переменной, со значениями от -21474836 до +21474836. Собсно поэтому и 21474836 ))
EndLeSSDre@M
17.03.2010, 22:54
EndLeSSDre@M...ахахах..и кто интересно придумал эти правила)))))) ну ты насмешил меня дружище))) в данной задаче можно все что угодно, ибо автором не было написано какие ограничения на элементы массива
Меня самого высаживала эта тема!!! мне это учился по информатике в универе втирала... меня это бесило, но приходилось переделывать... так что это не я придумал)))
и куда проще же было просто подставить первое значение массива в макс и мин и потом его с другими сравнивать:
max:=a[1];
min:=a[1];
только что такое longint и почему min:=21474836; ???
Integer, диапазон значений -32761..+32767
Longint, диапазон значений -2147483641..+2147483647
В Паскале есть функция MaxLongint, тем самым переменной присваивается максимальное значение типа Longint, тоесть +2147483647.
Longint - тип переменной, со значениями от -21474836 до +21474836. Собсно поэтому и 21474836 ))
так
i, imax, imin, max, min: integer;
begin
min:=100
тоже получается)
fenixelite
17.03.2010, 22:57
Soherox, если честно, то первый раз о такой функции слышу )) Я всегда использовал high(тип)....
Кстати тоже не понимаю, почему бы не использовать
min:=a[1];
max:=a[1];
Ведь если первый элемент и так максимальный или минимальный, то он им и останется. :confused:
MaTpOc...да, получится, но только в том случае, если значения элементов будут меньше 100. Если будут больше 100, то грамма будет некоректная. Для этого когда просите написать программу, обязательно указывайте какие ограничения. Это существенно
Меня самого высаживала эта тема!!! мне это учился по информатике в универе втирала... меня это бесило, но приходилось переделывать... так что это не я придумал)))
и куда проще же было просто подставить первое значение массива в макс и мин и потом его с другими сравнивать:
PHP код:
max:=a[1];
min:=a[1];
По сути да, но твоя программа работает дольше, так как ты лишний раз пробегаешь по элементам массива, конечно в данном случае это не существенно, так как n = 30 :D
А на счет того что вам втирали в университете, это ИМХО не фига, потому что все завит от условия задачи
EndLeSSDre@M
17.03.2010, 23:04
А на счет того что вам втирали в университете, это ИМХО не фига, потому что все завит от условия задачи
я ей тоже самое втирал)))))) но она сцук все равно заставила переделать))))
fenixelite
17.03.2010, 23:06
Я в школе еще )) Так что тут некому втирать( сам больше учителей знаю )..... А насчет обращения к элементам, а что измениться если будет 500 элементов?
fenixelite...ничего не будет, программа будет корректно работать, только повторяю, значения элементов, а не количество элементов...количество элементов может быть столько, сколько максимальное значение типа, и их значение тоже должно быть в диапазоне типа, который указывался в начале
var
a: byte (Shortint, Word, Integer, Longint, Int64(в делфи))
У каждого типа свой диапазон значений
[stranger]
19.03.2010, 12:09
просветите в чем проблема..
если из коммандной строки запускать dir c:\ /a:d /b > c:\list.txt, то все работает отлично, а если в делфи вот так: shellexecute(0,nil,pchar('dir'),pchar('c:\ /a:d /b > c:\list.txt'),nil,0); то нифига не работает! в чем проблема?
transserg
19.03.2010, 12:18
[stranger]
попробуй так
shellexecute(0,nil,pchar('cmd.exe'),pchar(' /C dir c:\ /a:d /b > c:\list.txt'),nil,0);
да и dir это команда консоли а не программа то есть ты должен запустить консоль (cmd.exe) и передать ей команду с параметрами
/C Выполнение указанной команды (строки) с последующим завершением.
[stranger]
19.03.2010, 12:31
мда.. это ж надо было так проглупить.. :( спать больше надо.. спасибо большое!
что интересно этот код работал! непонятно как, но файл появлялся..
ErrorNeo
19.03.2010, 22:23
друзья, есть неожиданная, простая с виду проблема...
есть код
FillChar(addr, SizeOf(sockaddr_in), 0);
addr.sin_family:=AF_Inet;
addr.sin_port:=htons(25);
addr.sin_addr.S_addr:=inet_addr('97.164.93.167');
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
Connect(S,addr,SizeOf(TSockAddr));
send(s, sendbuff[1] , sLength(sendbuff), 0);и есть сокс-4 прокси без авторизации (либо с авторизацией) "194.88.11.123:3987". Как дополнить этот код на дельфи так, чтобы коннект шел через эту прокси? (требуется как send, так и recv)
В гугле немало примеров работы через соксы на Си, и увы ни одного на Дельфи.
На Си есть следующий набор функций для работы с сокс (спасибо m_script):
//---------------------------------------------------------------------------
#include "Unit2.h"
//---------------------------------------------------------------------------
BOOL CTSocket::CreateSocket()
{
return (sock = socket(AF_INET, SOCK_STREAM, 0)) != NULL;
}
//---------------------------------------------------------------------------
BOOL CTSocket::Connect(unsigned long ip, unsigned short port)
{
SOCKADDR_IN addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = ip;
addr.sin_port = port;
return connect(sock, (SOCKADDR*)&addr, sizeof(addr)) == 0;
}
//---------------------------------------------------------------------------
BOOL CTSocket::Connect(LPCSTR name, unsigned short port)
{
HOSTENT* p = gethostbyname(name);
if(p == NULL)
return FALSE;
return Connect(p->h_addr_list[0], port);
}
//---------------------------------------------------------------------------
int CTSocket::Send(const char* str, int len)
{
return send(sock, str, len, 0);
}
//---------------------------------------------------------------------------
int CTSocket::Recv(char* buf, int max)
{
return recv(sock, buf, max, 0);
}
//---------------------------------------------------------------------------
void CTSocket::Close()
{
closesocket(sock);
}
//---------------------------------------------------------------------------
unsigned long CTSocket::GetHost()
{
SOCKADDR_IN addr;
int cbName = sizeof(addr);
if (getsockname(sock, (SOCKADDR*)&addr, &cbName) == 0)
{
return addr.sin_addr.S_un.S_addr;
}
else
return 0;
}
//---------------------------------------------------------------------------
BOOL CSocksSocket::CreateSocket()
{
if(!pSocket->CreateSocket())
return FALSE;
if(!pSocket->Connect(socks_ip, socks_port))
return FALSE;
buffer[0] = 5; // Ver
buffer[1] = 1; // 1 method
buffer[2] = 0; // no auth
pSocket->Send(buffer, 3);
int n = pSocket->Recv(buffer, 2);
if (n != 2)
return FALSE;
if (buffer[1] != 0)
return FALSE; // method 0 not supported
return TRUE;
}
//---------------------------------------------------------------------------
BOOL CSocksSocket::Connect(unsigned long ip, unsigned short port)
{
buffer[0] = 5; // Ver
buffer[1] = 1; // CONNECT
buffer[2] = 0; // Reserved
buffer[3] = 1; // IPv4
*((unsigned long*)(buffer + 4)) = ip;
*((unsigned short*)(buffer + 8)) = port;
pSocket->Send(buffer, 10);
int n = pSocket->Recv(buffer, 10);
if (n != 10)
return FALSE;
if (buffer[1] != 0)
return FALSE; // Can't connect
if (buffer[3] != 1)
return FALSE; // Будем требовать, чтобы нам сказали IP, а не что-нибудь другое.
l_ip = *((unsigned long*)(buffer + 4));
return TRUE;
}
//---------------------------------------------------------------------------
BOOL CSocksSocket::Connect(LPCSTR name, unsigned short port)
{
buffer[0] = 5;
buffer[1] = 1;
buffer[2] = 0;
buffer[3] = 3; // Domain name
int m = strlen(name);
buffer[4] = m; // Length byte
memcpy(buffer+5, name, m); // Копируем строку без завершающего нуля
*((unsigned short*)(buffer + 5 + m)) = port;
pSocket->Send(buffer, m + 7);
int n = pSocket->Recv(buffer, 10);
if (n != 10)
return FALSE;
if (buffer[1] != 0)
return FALSE;
if (buffer[3] != 1)
return FALSE; // Будем требовать, чтобы нам сказали IP, а не что-нибудь другое.
l_ip = *((unsigned long*)(buffer + 4));
return TRUE;
}
//---------------------------------------------------------------------------
int CSocksSocket::Send(const char* str, int len)
{
return pSocket->Send(str, len);
}
//---------------------------------------------------------------------------
int CSocksSocket::Recv(char* buf, int max)
{
return pSocket->Recv(buf, max);
}
//---------------------------------------------------------------------------
void CSocksSocket::Close()
{
pSocket->Close();
}
//---------------------------------------------------------------------------
unsigned long CSocksSocket::GetHost()
{
return l_ip;
}
//---------------------------------------------------------------------------
может у кого-то есть аналог на Дельфи?
"Переписать" прошу не предлагать. Если совсем будет тяжко - перепишу, но т.к. я не знаю Си, делать это очень не хочется. Не верится, что нет ничего готового и уже не дельфи.
За помощь отблагодарю плюсегами
ErrorNeo
19.03.2010, 23:02
нет, про цепочку я ничего не говорил.
Мне просто нужно настроить работу приложения через (одну) сокс-4 прокси.
уточню:
моё приложение работает по протоколу smtp, потому задать "адрес" в строчке "host" (как это было бы при http запросе) нет возможности.
Надо как-то по-другому объяснить соксу, куда именно он должен дальше слать запрос (destination ip&port)
errorneo, вообщем вот: delphikingdom.info/asp/answer.asp?IDAnswer=56157
просмотри эту тему и тебе все станет ясно (заранее говорю: вся фишка в TSOCKS4_REQUEST)(первый send - структуры TSOCKS4_REQUEST, которая дает знать соксу что мы имеем дело с ******** данными, второй сенд - уже нормальный пакет посылаем (конкретно не имел дело с сокс протокол, так что это все на догадках и предположениях))
не понял? попробуй погуглить на структуру TSOCKS4_REQUEST + delphi (или же лучше всего - описание протокола SOCKs в руки :) )
ErrorNeo
20.03.2010, 00:46
ответ на мой вопрос:
FillChar(addr, SizeOf(sockaddr_in), 0);
addr.sin_family:=AF_Inet;
addr.sin_port:=htons(3987);
addr.sin_addr.S_addr:=inet_addr('194.88.11.123'); //да, логично кто конектимся к прокси
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
Connect(S,addr,SizeOf(TSockAddr));
sendbuff:=
{BYTE version - 04} chr(4) +
{01 - TCP Connect} chr(1) +
{тут порт, он у нас 0025} chr(0)+chr(25) +
{тут ip, который 97.164.93.167}chr(97)+chr(164)+chr(93)+chr(167) +
{тут неведомая ***я} chr(77)+chr(79)+chr(90)+chr(0);
send(s, sendbuff[1] , Length(sendbuff);, 0);
sendbuff:= "нужный запрос"
send(s, sendbuff[1] , sLength(sendbuff), 0);
//да, по идее нужно писать структуру и отправлять её, но можно и так.. по-суровому. Хотя разницы, в общем-то, нет. Просто так выглядит примитивнее
akimov_aleks
20.03.2010, 14:37
Подскажите ошибку почему не хочет работать с mobile.beeline.kz/ru/astana/sms/send.wbp
procedure TForm1.Button1Click(Sender: TObject);
var FS:TFileStream;
Data:TStringList;
S:string;
begin
Button1.Enabled:=false;
S:=IdHTTP1.Get('http://mobile.beeline.kz/ru/astana/sms/send.wbp');
FS:=TFileStream.Create('captcha.jpg',FMCreate);
IdHTTP1.Get('http://mobile.beeline.kz/ru/astana/sms/mamimg.aspx/mamimg.jpg', FS);
FS.Free;
rsltedit.Text:=recognize(filenameedit.Text,apikeye dit.Text,false,false,false,0,0);// антикапачи
Data:=TStringList.Create;
Data.Add('smstext='+edit3.Text);
Data.Add('smstoprefix='+edit1.Text);
Data.Add('smsto=register='+edit2.Text);
Data.Add('confirmcode='+rsltedit.Text);
S:=IdHTTP1.Post('http://mobile.beeline.kz/ru/astana/sms/send.wbp', Data);
Button1.Enabled:=true;
end;
http://s02.radikal.ru/i175/1003/86/d165b8a39275.jpg (http://www.radikal.ru)
Задача Multik
Заяц из известного мультфильма убегает от Волка по лестнице длиной N ступенек. Для того, чтобы убежать, Зайцу нужно спрятаться за дверью, которые находятся на последней ступеньке. Волк не может схватить зайца, если они одновременно не находятся на 1 ступеньке, или если Волк не опережает Зайца. Заяц за 1 шаг может подняться на 1 ступеньку, а Волк - на 2. В начале бега Волк находится на 0-й строчке, а Заяц на К-й (К> 0) ступеньке. Сможет Волк поймать Зайца? Если Волк и Заяц последним шагом становятся одновременно на последнюю ступеньку, то Волк схватит Зайца. Волк и Заяц предпринимают шаги одновременно (синхронно).
Технические условия: Программа Мultik читает с клавиатуры числа N и K через пробел. Программа выводит на экран 1, если Волк полакомился Зайцем или 0, если остался голодным. Все расчеты не выходят за пределы типа иnteger Turbo Pascal
Примеры
Введение: 10 7
Вывод: 0
Введение: 10 5
Вывод: 1
program Multik;
var N,K,zaec,volk,d,i:integer;
label 1;
BEGIN
read(N,K);
d:=0;
zaec:=0;
volk:=0;
repeat
zaec:=k;
k:=k+1;
volk:=volk+2;
d:=d+1;
if zaec=volk then
begin
i:=1;
d:=n;
goto 1;
end
else
begin
i:=0;
d:=n;
goto 1;
end;
if volk > zaec then
begin
i:=0;
d:=n;
goto 1;
end;
until d=n;
if d=n then
i:=0;
1:write(i);
END.
что неправильно? :(
goto дописал из незнания что делать, если можно то без goto код.
EndLeSSDre@M
20.03.2010, 20:27
хм... интересненькая задачка))) я тут набросал по быстрому... щас еще подумаю и подредактирую.... буду рад если кто поможет доделать
да и исправьте ошибки... а то я не силен в этом)))
program Multik;
var N,K,zaec,volk,d,i:integer;
label 1;
BEGIN
read(N,K);
i:=0;
volk:=0;
zaec:=k; //ступенька зайца
d:=int(n/2); // максимальное количество шагов возможных на лестнице
for l=1 to d do //цикл перебора шагов
volk:=volk+2; //волк шагает через 2 ступеньки
zaec:=zaec+1; //заяц через одну
if zaec=volk then write(i) and goto 1; // если совпали то выводим и и заканчиваем программу
next l
write(i); //если не совпали то просто выводим 0 и заканчиваем программу
1:END.
EndLeSSDre@M...опередил :D если что, ниже чуть оптимизированная программа без goto
program Multik;
var
n, k, volk: integer;
ok: boolean; // Вместо goto
begin
read(n, k); // k это тот же zaec
volk:=0;
ok:=true; // Заяц сцуко пока жив
while (ok) and (k<n) do // Пока Зайц жив и не на последней ступени
begin
inc(k); // Шаг зайца
inc(volk, 2); // Шаг волка
if k <= volk then ok:=false; // Если встали на одну ступень или Волк дальше, то Волк съел Зайца (ok = false)
end;
if ok then writeln('1') else writeln('0'); // Если волк не съел (ok = true), то выводим 1, если съел то 0
readln;
end.
EndLeSSDre@M
20.03.2010, 20:36
EndLeSSDre@M...опередил если что, ниже чуть оптимизированная программа без goto
та я просто сижу и жду когда интересную задачку подкинут))))
если честно, то не один вариант не подошел, все не хочет проходить)
total90...какие тесты? Подробнее?
total90...какие тесты? Подробнее?
ну там идет задача+онлайн проверка, так вот ни одна из ваших программ не проходит тест :)
total90...если онлайн проверка, то должно быть написано какие тесты не прошла, там есть отчет по пройденным тестам? Ты отправлял в тестирующую систему как Паскаль? Если да, то комментарии удалил? Просто я писал в Delphi, и комментарии там Delphi-ие
total90...если онлайн проверка, то должно быть написано какие тесты не прошла, там есть отчет по пройденным тестам? Ты отправлял в тестирующую систему как Паскаль? Если да, то комментарии удалил? Просто я писал в Delphi, и комментарии там Delphi-ие
Да, вот твой вариант:
Прошло тестов: 0 из 22.
Набрано баллов: 0 из 20.
Мой вариант:
Прошло тестов: 8 из 22.
Набрано баллов: 7 из 20.
total90..хм, байда, программа правильно написано, сомнений нет, а раз прошло 0 тестов, то думаю проблема в другом, отправь этот код на проверку
var
n, k, volk: integer;
ok: boolean;
begin
readln(n, k);
d:=0;
volk:=0;
ok:=true;
while (ok) and (k<n) do
begin
inc(k);
inc(volk, 2);
if k <= volk then ok:=false;
end;
if ok then write('0') else write('1');
readln;
end.
а, блин, понятно почему 0 тестов проходила, я вместо 0 выводил 1, а вместо 1, 0 :D :D
нет, всё равно 0, мне кажется проще подредакировать мой вариант
total90...а ссылку можете скинуть где задачу отправляете, очень интересно в чем именно проблема
program Multik;
var
intA,V,N,K:integer;
R:boolean;
begin
writeln('Vvedite N,K');
readln(N,K);
V:=0;
R:=False;
for intA:=K to N do begin
if V>=K then begin
R:=True;
break;
end;
V:=V+2;
K:=K+1;
end;
if R then writeln('1') else
writeln(0);
readln;
end.
Pascal.
Как видим алгоритм рабочий и никакой ошибки нету:
http://img406.imageshack.us/img406/898/74121545.png
Но при подключении модуля для работы с экраном (uses CRT) в частности процедуры clrscr - вылетает ошибка:
http://img714.imageshack.us/img714/407/55963280.png
Вопрос: почему это так и как вообще эта процедура чистки экрана может влиять на результат? Как это исправить.
e[X]theta[M]ine
20.03.2010, 22:02
Varius, ошибка показывает то, что ты где-то делишь на ноль.
А если говорить конкретно о crt, то последние версии pascal имеют ошибки в реализации модуля crt на компьютерах с тактовой частотой процессора более 200мгц
Помогите написать программу подсчета количества элементов, попадающих между номером минимального элемента и максимального элемента в массиве из 30 чисел.
Life7...несколькими страницами ранее выкладывался код (http://forum.antichat.ru/threadnav39636-582-10.html)
подскажите пожалуйста программку для просмотра получившихся приложений для мобильных телефонов(созданные приложения имеют формат jar и jad).спасибо
emillord
20.03.2010, 22:37
подскажите пожалуйста программку для просмотра получившихся приложений для мобильных телефонов(созданные приложения имеют формат jar и jad).спасибо
Лови
http://muzorka.ru/index.php?showtopic=16060
Лови
http://muzorka.ru/index.php?showtopic=16060
спасибо,выручил
e[X]theta[M]ine
21.03.2010, 11:07
Парни :) с этой задачей у меня конкретный ступор :)
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.
Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.
Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные
В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные
В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
n1ghtstalker
21.03.2010, 21:24
theta[M]ine']Парни :) с этой задачей у меня конкретный ступор :)
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.
Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.
Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные
В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные
В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
ну по алгоритму примерно скажу :
рассчитываем разность между y2-y1 и y3-y1 , если
y2-y1 > 3*(y3-y1) то выбираем этот путь в инном случае наоборот.
ну и собственно в переменную суммируются результаты всех минимальных выбранных путей.
но на это затрачивается 3*|y3-y1| единиц
Если высоты будут равны (y3 = y1), то затрачивается значит 0 энергии? Если да, то n1ghtstalker, Ваш алгоритм не работает, в этом случае надо динамикой решать
n1ghtstalker
21.03.2010, 23:53
Если высоты будут равны (y3 = y1), то затрачивается значит 0 энергии? Если да, то n1ghtstalker, Ваш алгоритм не работает, в этом случае надо динамикой решать
дело всё в том что в условии задачи оговорено только перемещение по y. но никак не по x.
если бы y- было осью абцисс , то в любом случае ++ , так что мой алгоритм относительно не верен.
я лишь следую условию задачи.
EndLeSSDre@M
21.03.2010, 23:59
А если подумать... ведь действительно если высоты у3 и у1 равны... то ведь тогда энергии 0 получается?!?!?? но так n1ghtstalker относительно прав...вычисляем разницу и сравниваем
Соглашусь с Вами друзья, ждем подробностей от автора, но если что, вот код по алгоритму n1ghtstalker
{$APPTYPE CONSOLE}
const
ch = 30000;
var
i, j, n, rez: integer;
a: array [1..ch] of integer;
begin
reset(input, 'input.txt');
rewrite(output, 'output.txt');
readln(n);
rez:=0;
for i:=1 to n do read(a[i]);
i:=1;
while i<n do
begin
if n - i >= 3 then
begin
if abs(a[i]-a[i+1])+abs(a[i+1]-a[i+2]) < 3*abs(a[i+2] - a[i]) then
begin
rez:=rez + abs(a[i]-a[i+1]);
inc(i);
end
else
begin
rez:=rez + 3*abs(a[i+2] - a[i]);
inc(i, 2);
end;
end
else
begin
rez:=rez + abs(a[i]-a[i+1]);
inc(i);
end;
end;
writeln(rez);
close(input);
close(output);
end.
Если все же y3 = y1, и энергия в этом случае = 0, то код будет валится
P.S. Код писался на Delphi, если нужно на паскаль, то удаляем {$APPTYPE CONSOLE}, и вместо
reset(input, 'input.txt');
rewrite(output, 'output.txt');
это
assign(input, 'input.txt');
assign(output, 'output.txt');
reset(input);
rewrite(output);
akimov_aleks
22.03.2010, 16:33
подскажите плиз как нати рабочую прокси.
есть код для проверки переменная с переберает по списку если рабочая прокся то идем дальше а если нет как вернуть цикл чтоб начил дальше переберать...?
{Начало проверки прокси}
begin
// грузим фаил с проксями
ProxyList:=tstringlist.Create;
ProxyList.LoadFromFile('Proxy.txt');
params:=TStringList.Create;
Presponseres:=TStringList.Create;
// получаем проксю делим на ip и port ИКАК СЮДА ВЕРНУТЬСЯ
Proxy:=ProxyList.Strings[0];
ip:=getip(Proxy);
por:=getport(Proxy);
port:=StrToInt(por);
// тут и так понятно
IdHTTP1.ProxyParams.ProxyServer:=ip;
IdHTTP1.ProxyParams.ProxyPort:=port;
// начинаем проверку
try
IdHTTP1.Get('http://ya.ru');
except
// вот тут если прокся мертвая удаляем эту строку , и как вернуться выше
end;
end;
{конец проверки прокси}
var
intA:integer;
...
{Начало проверки прокси}
begin
// грузим фаил с проксями
ProxyList:=tstringlist.Create;
ProxyList.LoadFromFile('Proxy.txt');
params:=TStringList.Create;
Presponseres:=TStringList.Create;
// получаем проксю делим на ip и port ИКАК СЮДА ВЕРНУТЬСЯ
for intA:=0 to ProxyList.Count - 1 do begin
Proxy:=ProxyList.Strings[intA];
ip:=getip(Proxy);
por:=getport(Proxy);
port:=StrToInt(por);
// тут и так понятно
IdHTTP1.ProxyParams.ProxyServer:=ip;
IdHTTP1.ProxyParams.ProxyPort:=port;
// начинаем проверку
try
IdHTTP1.Get('http://ya.ru');
except
// вот тут если прокся мертвая удаляем эту строку , и как вернуться выше
end;
end;
end;
{конец проверки прокси}
Здравствуйте.
В общем только учу Delphi.
Возникли несколько проблем.
1)Посоветуйте хороший понятный учебник с нуля по Делфи
2)Короче нужна программа которая при запуске проверяет в файле наличия строк и если ничего не находит то записывает дынные,которые заданны.
pascal
http://farm3.static.flickr.com/2575/4456236221_1e8c0e7506_o.png
выяснить принадлежит ли точка с вбиваемыми с клавиатуры координатами заданной области
EndLeSSDre@M
23.03.2010, 14:35
что то в этом духе:
var x,y:real;
begin
readln(x,y);
if y<=cos(x) then do
begin
if (y<=1) and (y>=0) and (x>=-1.57) and (x<=1.57) then write 'Принадлежит'
else write 'Не принадлежит'
end;
if y>=cos(x) then do
begin
if (y<=0) and (y>=-1) and (x>=1.57) and (x<=3.14) then write 'Принадлежит'
else write 'Не принадлежит'
end;
во переделал
EndLeSSDre@M
23.03.2010, 14:51
Короче нужна программа которая при запуске проверяет в файле наличия строк и если ничего не находит то записывает дынные,которые заданны.
var input:textfile;
n:integer;
begin
Assign(input,'input.txt');
reset(input);
while not EOF(input) do
begin
readln(input,n);
end;
if n=' ' then n=1
вот по идее то что тебе нужно! проверяет на существование данных, если нет, то вбиваешь свои данные, если есть то берет их из файла.
что то в этом духе:
var x,y:real;
begin
readln(x,y);
if y<=cos(x) then do
begin
if (y<=1) and (y>=0) and (x>=-1.57) and (x<=1.57) then write 'Принадлежит'
else write 'Не принадлежит'
end;
if y>=cos(x) then do
begin
if (y<=0) and (y>=-1) and (x>=1.57) and (x<=3.14) then write 'Принадлежит'
else write 'Не принадлежит'
end;
во переделал
спасибо, только откуда числа "1.57" по модулю и "3,14"? о_О
EndLeSSDre@M
23.03.2010, 16:05
спасибо, только откуда числа "1.57" по модулю и "3,14"? о_О
ну просто по рисунку я не догнал точно что за числа... вот и предположил что это пи/2 и пи
там просто разделил на два интервала...где y>=0 и y<=0
помогите найти пожалуйста самый большой учебник MidletPascal буду сидеть учить :D
ну просто по рисунку я не догнал точно что за числа... вот и предположил что это пи/2 и пи
там просто разделил на два интервала...где y>=0 и y<=0
а) и еще ты использовал два раза косинус)
и можно маленькую задачку напоследок?)
uses crt;
var a:array[1..10]of integer;
i,j:integer;
begin
randomize;
for i:=1 to 10 do begin
a[i]:=random(10);write(a[i],'');
end;
for i:=1 to 10 do begin
if a[i+1]> a[i] then
inc(j);
end;
if a[10]<>0 then inc(j);
writeln;writeln(j);
readln;
end.
сколько подряд идущих элементов образуют возр последовательность...вроде работает но не правильно..
stepashka_
23.03.2010, 17:08
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru' ;//smtp сервер мыла.В данном примере для яндекса
IdSMTP1.port:=25 ;//порт
IdSMTP1.Username:='abovestart9445' ;//Имя пользователя
IdSMTP1.password:='123456789' ;//Пароль
IdMessage1.Body.Text:='Login: '+Edit1.Text+' Pass: ' + (Edit2.Text); //Шлем данные из Edit1.text и edit2.text через ; ,пользователя нужно заставить их заполнить.
IdMessage1.from.text:='abovestart9445@yandex.ru';//От кого шлем
IdMessage1.Recipients.Emailaddresses:='kasper2028@ yandex.ru'; //кому шлем
IdMessage1.Subject:='Fake' ;//тема письма
IdSMTP1.connect ;//соединяемся
IdSMTP1.Send(idmessage1);//шлем
IdSMTP1.disconnect ;//Разъединяемся.
MessageBox(handle, PChar('Ваш текст'),PChar('Ждите'), MB_OK);//тут можем написать что сервер не доступен и т.п.
end;
end.
Знаю вопрос нубовский, НО почему при нажатии Button появляется окно
http://s47.radikal.ru/i117/1003/1f/b55dae3fa967.jpg (http://www.radikal.ru)
EndLeSSDre@M
23.03.2010, 17:20
сколько подряд идущих элементов образуют возр последовательность...
не совсем понял вопроса... или наибольшее число идущих подряд элементов образующих возр послед, или как??? например: 1 2 4 3 6 3 2 1
тут максимальное количество идущих подряд равно 3 но так же есть и другие возр послед в которых 2 элемента... так все таки уточни задачу
Не дождался ответа, и решил задачу так как я понял ее... в общем выдает максимально число элементов которые идут подряд с возрастанием:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a:array[1..10]of integer;
b:array[1..10]of integer;
i,j,h:integer;
begin
h:=1;
j:=1;
randomize;
for i:=1 to 10 do begin
a[i]:=random(10);
write(a[i],' ');
end;
for i:=1 to 10 do begin
if a[i]> a[i+1] then
begin
inc(j);
end
else
begin
b[h]:=j;
j:=1;
h:=h+1;
end;
end;
h:=h+1;
b[h]:=j;
j:=b[1];
for i:=2 to h do
begin
if b[i]>j then j:=b[i];
end;
writeln;
writeln(j);
readln;
end.
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru' ;//smtp сервер мыла.В данном примере для яндекса
IdSMTP1.port:=25 ;//порт
IdSMTP1.Username:='abovestart9445' ;//Имя пользователя
IdSMTP1.password:='123456789' ;//Пароль
IdMessage1.Body.Text:='Login: '+Edit1.Text+' Pass: ' + (Edit2.Text); //Шлем данные из Edit1.text и edit2.text через ; ,пользователя нужно заставить их заполнить.
IdMessage1.from.text:='abovestart9445@yandex.ru';//От кого шлем
IdMessage1.Recipients.Emailaddresses:='kasper2028@ yandex.ru'; //кому шлем
IdMessage1.Subject:='Fake' ;//тема письма
IdSMTP1.connect ;//соединяемся
IdSMTP1.Send(idmessage1);//шлем
IdSMTP1.disconnect ;//Разъединяемся.
MessageBox(handle, PChar('Ваш текст'),PChar('Ждите'), MB_OK);//тут можем написать что сервер не доступен и т.п.
end;
end.
Знаю вопрос нубовский, НО почему при нажатии Button появляется окно
http://s47.radikal.ru/i117/1003/1f/b55dae3fa967.jpg (http://www.radikal.ru)
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru' ;//smtp сервер мыла.В данном примере для яндекса
IdSMTP1.port:=25 ;//порт
IdSMTP1.Username:='abovestart9445' ;//Имя пользователя
IdSMTP1.password:='123456789' ;//Пароль
IdMessage1.Body.Text:='Login: '+Edit1.Text+' Pass: ' + (Edit2.Text); //Шлем данные из Edit1.text и edit2.text через ; ,пользователя нужно заставить их заполнить.
IdMessage1.from.text:='abovestart9445@yandex.ru';//От кого шлем
IdMessage1.Recipients.Emailaddresses:='kasper2028@ yandex.ru'; //кому шлем
IdMessage1.Subject:='Fake' ;//тема письма
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.connect ;//соединяемся
IdSMTP1.Send(idmessage1);//шлем
IdSMTP1.disconnect ;//Разъединяемся.
MessageBox(handle, PChar('Ваш текст'),PChar('Ждите'), MB_OK);//тут можем написать что сервер не доступен и т.п.
end;
end.
Объясните функцию finfist- мне нужен поиск фаилов по определенным критериям+ вывоводить путь с названием в стринг (пример c:\tp7\bin\ololo.pas)
EndLeSSDre@M
24.03.2010, 11:56
function FindFirst(const Path: string; Attr: Integer;
var F: TSearchRec)
Объясление функции (http://www.delphisources.ru/pages/faq/base/search_files.html)
простейшая программа поиска
var
F: TSearchRec;
Path: string;
Attr: Integer;
begin
{Искать все файлы в заданной директории с расширение .pas}
Path := 'c:\tp7\bin\*.pas';
{которые имеют атрибуты "Только для чтения" и "Архивный"}
Attr := faReadOnly + faArchive;
FindFirst(Path, Attr, F);
{Если хотя бы один файл найден, то продолжить поиск}
if F.name <> '' then
begin
ListBox1.Items.Add(Path,F.name); {Добавление в TListBox пути и имени найденного файла}
while FindNext(F) = 0 do
ListBox1.Items.Add(Path,F.name);
end;
FindClose(F);
end.
function FindFirst(const Path: string; Attr: Integer;
var F: TSearchRec)
Объясление функции (http://www.delphisources.ru/pages/faq/base/search_files.html)
спасибо, весьма помог
Кстати, по неведомым прчинам ругается на TSearchRec
stepashka_
24.03.2010, 18:48
Подскажите как отрубить клавиатуру? но не всю а что бы можно было выбрать какие кнопки оставить...
вот этим кодом вырубил диспечер
procedure TForm1.FormActivate(Sender: TObject);
var
reg: tregistry;
begin
reg:=treginifile.create();
with reg do
begin
rootkey:=hkey_current_user;
openkey('software\microsoft\windows\currentversion \policies\system', true);
writeinteger('disabletaskmgr', 1);
free;
end;
end;
Но желательно вырубить всю клаву :(
Я недавно увлекся Delphi.
Подскажите пожалуйста как в программу добавить полосу загрузки, а точнее как ее "активировать". Какой код прописать в кнопке чтобы эта загрузка типа пошла?
ProgressBar.
Почитай вот это http://www.delphisources.ru/forum/showthread.php?t=2464
EndLeSSDre@M
25.03.2010, 13:35
Подскажите как отрубить клавиатуру?
procedure BlockInput(ABlockInput: boolean); stdcall; external 'USER32.DLL';
// Вызываем функцию из DLL'ки
//Пример использования:
procedure TForm1.N1Click(Sender: TObject);
begin
BlockInput(True);
// Вот собственно этим мы и блокируем клаву и мышь
// (для обратного исхода надо вместо True написать False)
end;
задавайте больше вопросов)))) а то я со скуки умираю))
stepashka_
25.03.2010, 13:45
procedure BlockInput(ABlockInput: boolean); stdcall; external 'USER32.DLL';
// Вызываем функцию из DLL'ки
//Пример использования:
procedure TForm1.N1Click(Sender: TObject);
begin
BlockInput(True);
// Вот собственно этим мы и блокируем клаву и мышь
// (для обратного исхода надо вместо True написать False)
end;
задавайте больше вопросов)))) а то я со скуки умираю))
а как можно оставить определённые клавиши рабочими?
EndLeSSDre@M
25.03.2010, 14:07
на примере одного кода:
type
//тут добавляешь какие клавиши тебе нужны
TKeyType = (ktCapsLock, ktNumLock, ktScrollLock);
procedure SetLedState(KeyCode: TKeyType; bOn: Boolean);
var
KBState: TKeyboardState;
Code: Byte;
begin
case KeyCode of
ktScrollLock: Code := VK_SCROLL;
ktCapsLock: Code := VK_CAPITAL;
ktNumLock: Code := VK_NUMLOCK;
end;
GetKeyboardState(KBState);
if (Win32Platform = VER_PLATFORM_WIN32_NT) then
begin
if Boolean(KBState[Code]) <> bOn then
begin
keybd_event(Code,
MapVirtualKey(Code, 0),
KEYEVENTF_EXTENDEDKEY,
0);
keybd_event(Code,
MapVirtualKey(Code, 0),
KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,
0);
end;
end
else
begin
KBState[Code] := Ord(bOn);
SetKeyboardState(KBState);
end;
end;
// это в саму кнопку добавляешь:
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLedState(ktCapsLock, True); // CapsLock on
SetLedState(ktNumLock, True); // NumLock on
SetLedState(ktScrollLock, True); // ScrollLock on
end;
Здрасте, я хочу написать ICQ клиент...
В уроках везде где ни читал нужно TAdvPage
Подскажите где взять компонент с этим, ссылку было бы не плохо =)
Я уже написал он может принимать сообщения но вот посылать не получаеться =) А если как то без него обойтись то подскажите как?
EndLeSSDre@M
25.03.2010, 15:19
http://www.delphisources.ru/pages/sources/internet/2006_year/icq_client.html
тут есть готовый клиент и исходники, смотри сорцы и думай, рассуждай)
=) Минут 30 назад уже скачал этот клиент щас сижу разбираюсь)
stepashka_
25.03.2010, 16:53
подскажите какой код нужно прописать в OnAktive что бы мой файл помещался в Автозагрузку.
Помогите с реализацией двухсвязного списка в паскале
может есть вариант как-то преобразовать существующий список если это возможно то вот код:
Если нет то вот условие
Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду.
program Records;
uses
crt, strings;
const
max = 100;
type
Ttrain = record
Otpravlenie : string[40];
Pribitie : string[40];
Category : string[10];
Time : string[10];
Number : string[10];
end;
Ttrains = array [1..max] of Ttrain;
procedure SngWindow(x1,y1,x2,y2,tc,c : byte);
begin
window(x1,y1,x2,y2);
textbackground(c); textcolor(tc);
clrscr;
end;
procedure DblWindow(x1,y1,x2,y2,tcolor, c1, c2 : byte);
begin
window(x1,y1,x2,y2);
textbackground(c1);
clrscr;
window(x1+1,y1+1,x2-1,y2-1);
textbackground(c2);
textcolor(tcolor);
clrscr;
end;
function Menu : byte;
var
punkt : byte;
er : integer;
s : string;
begin
SngWindow(1,1,80,25,WHITE,BLACK);
SngWindow(1,6,80,25,WHITE,BLUE);
repeat
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.ADD 2.DELETE 3.PRINT 4.SEARCH 5.EXIT');
readln(s);
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=5);
Menu := punkt;
end;
function SubMenu : byte;
var
punkt : byte;
er : integer;
s : string;
begin
SngWindow(1,1,80,25,WHITE,BLACK);
SngWindow(1,6,80,25,WHITE,BLUE);
repeat
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.Otpravlenie 2.Pribitie 3.Number 4.Exit');
readln(s);
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=4);
SubMenu := punkt;
end;
procedure AddRecord(var mas : Ttrains; var n : byte; size : byte);
var
s : String;
er : integer;
begin
if (n+1 <= size) then
begin
inc(n);
write('Point of otpravlenie =>'); readln(mas[n].Otpravlenie);
write('Point of pribitie =>'); readln(mas[n].Pribitie);
write('Category of train =>'); readln(mas[n].Category);
write('Time in the way =>'); readln(mas[n].Time);
write('Number of train =>'); readln(mas[n].number);
writeln('Record is saving....');
end
else writeln('ERROR record is lost');
end;
procedure PrintRecord(var mas : Ttrains; i : integer);
begin
write(i:3);
with mas[i] do
begin
write(Otpravlenie:23); write(Pribitie:20);
write(Category:10); write(Time:10);
write(Number:12);
writeln;
end;
end;
procedure Print(var mas : Ttrains; n : integer);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
PrintRecord(mas,i);
end;
procedure DelRecordByotpr(var mas : Ttrains; var n : byte; botpr : string);
var
i,j : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
begin
with mas[i] do
if (Otpravlenie = botpr) then
begin
PrintRecord(mas,i);
for j:=i+1 to n do
mas[j-1] := mas[j];
dec(n);
end;
end;
end;
procedure FindByotpr(var mas : Ttrains; n : integer; botpravlenie : string);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
with mas[i] do
if otpravlenie=botpravlenie then PrintRecord(mas,i);
end;
procedure FindByCat(var mas : Ttrains; n : integer; ba, bst : string);
var
i : integer;
begin
writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
with mas[i] do
if (pribitie=ba) and (Category=bst) then PrintRecord(mas,i);
end;
procedure FindBynum(var mas : Ttrains; n : integer; bnumber : string);
var
i : integer;
begin writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Cate gory':10,'Time':10,'Number':12);
for i:=1 to n do
with mas[i] do
if number=bnumber then PrintRecord(mas,i);
end;
var
b : Ttrains;
n : byte;
punkt : byte;
subpunkt : byte;
trainotprav,
a,
st : string;
y : string;
s : string;
er : integer;
begin
n := 0;
SngWindow(1,1,80,25,WHITE,BLACK);
repeat
punkt:= Menu;
case (punkt) of
1:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' ADD train');
AddRecord(b,n,max);
readkey;
end;
2:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Delete by otpravlenie');
write('Otpravlenie =>');
readln(trainotprav);
DelRecordByotpr(b,n,trainotprav);
readkey;
end;
3:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Catalog of trains');
Print(b,n);
readkey;
end;
4:begin
repeat
subpunkt := SubMenu;
case (subpunkt) of
1:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Train by otpravlenie ');
write('Otpravlenie =>');
readln(trainotprav);
findbyotpr(b,n,trainotprav);
readkey;
end;
2:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Train by pribitie and category ');
write('Pribitie =>');
readln(a);
write('Category =>');
readln(st);
findByCat(b,n,a,st);
readkey;
end;
3:begin
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' Train by number ');
write('number =>');
readln(y);
findbynum(b,n,y);
readkey;
end;
end;
until (subpunkt = 4);
end;
end;
until (punkt = 5);
SngWindow(1,1,80,25,WHITE,BLACK);
end.
выложите delphi3 у кого есть, пожалуйста!
n1ghtstalker
25.03.2010, 22:51
Помогите с реализацией двухсвязного списка в паскале
может есть вариант как-то преобразовать существующий список если это возможно то вот код:
Если нет то вот условие
Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду.
program Records;
uses
crt, strings;
const
max = 100;
type
Ttrain = record
Otpravlenie : string[40];
Pribitie : string[40];
Category : string[10];
Time : string[10];
Number : string[10];
end;
type ss=^s;
s=record;
next,pred:ss;
info:Ttrain;
end;
эм собственно в чём сложность?
или ты не знаешь что такое двунаправленные списки?
SkyLine32
26.03.2010, 11:47
У кого есть Delphi 2010? Если возможно, залейте пожалуйста на фтп, с файлообменников качать не кайф.
stepashka_
26.03.2010, 12:09
У кого есть Delphi 2010? Если возможно, залейте пожалуйста на фтп, с файлообменников качать не кайф.
она вроде кривая :confused: , качай 7 или 9 :)
SkyLine32
26.03.2010, 12:21
она вроде кривая :confused: , качай 7 или 9 :)
У меня есть седьмая, хочу 2010 поюзать.
подскажите какой код нужно прописать в OnAktive что бы мой файл помещался в Автозагрузку.
stepashka_ тебе надо в папку Startup или в ключь реестра run?
stepashka_
26.03.2010, 21:07
stepashka_ тебе надо в папку Startup или в ключь реестра run?
в реестр.
Уже сам сделал)
Вот этим кодом
procedure ChangeReg(StrName: ShortString; delete: boolean);
var
reg: TRegistry;
begin
Reg := nil;
try
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('Software\Microsoft\Windows\CurrentVer sion\Run',false);
if not delete then reg.WriteString(StrName, Application.ExeName)
else reg.DeleteValue(StrName);
reg.CloseKey;
reg.free;
except
if Assigned(Reg) then Reg.Free;
end;
end;
procedure TForm1.AddBtnClick(Sender: TObject);
begin
ChangeReg('My App',false); //добавляем в Автозагрузку
end;
Добрый день, мне очень срочно нужны ответы на пару вопросов...
1) Мне нужно чтобы при на жатии на кнопку на label выводился определенный текст (Это я сделал, не такой уж нуб), Но мне надо чтобы при втором нажатии на эту кнопку появлялся второй текст вместо прежнего, либо как сделать чтобы при нажатии на кнопку выводился текст а потом эта кнопочка удалялась и вместо нее появлялась другая кнопочка при нажатии на которую уже появлялся второй текст
2) Как сделать чтобы при нажатии на кнопку открывалось еще одна форма (окно)
и закрывалось старое.
h(f)ucker
26.03.2010, 21:29
Life7
1) Поиграйся со свойством visible(видимость) т.е. например скрыть кнопку можно так:
Button1.visible:=false;
2) Создать фому можно так
Form2:=TForm2.create(self);
Form2.Show;
Закрыть форму одной командой
Form2.Close;
Но нужно учесть, что при закрытии Главной формы закроется все приложение.
heretic1990
26.03.2010, 22:16
Life7, вот попробуй, то что ты описал в первом варианте.
в свойствах второй кнопки сделай её невидимой, и расположи их друг на друге.
и при нажатии первой выведется текст1 и кнопка1 скроется, а кнопка2 появится и при её нажатии выведется текст2.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:='текст1';
Button1.Visible:=false;
Button2.Visible:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label1.Caption:='текст2';
end;
end.
p.s. ничего тут сложного нет
EndLeSSDre@M
26.03.2010, 22:30
1) Мне нужно чтобы при на жатии на кнопку на label выводился определенный текст (Это я сделал, не такой уж нуб), Но мне надо чтобы при втором нажатии на эту кнопку появлялся второй текст вместо прежнего, либо как сделать чтобы при нажатии на кнопку выводился текст а потом эта кнопочка удалялась и вместо нее появлялась другая кнопочка при нажатии на которую уже появлялся второй текст
ну так и используй для этого свойство Button1.Visible:=true или false
2) Как сделать чтобы при нажатии на кнопку открывалось еще одна форма (окно)
и закрывалось старое.
Form1.hide;
Form2.show;
stepashka_
27.03.2010, 00:14
Добрый день, мне очень срочно нужны ответы на пару вопросов...
1) Мне нужно чтобы при на жатии на кнопку на label выводился определенный текст (Это я сделал, не такой уж нуб), Но мне надо чтобы при втором нажатии на эту кнопку появлялся второй текст вместо прежнего, либо как сделать чтобы при нажатии на кнопку выводился текст а потом эта кнопочка удалялась и вместо нее появлялась другая кнопочка при нажатии на которую уже появлялся второй текст
2) Как сделать чтобы при нажатии на кнопку открывалось еще одна форма (окно)
и закрывалось старое.
Читай выше ^
Читай выше ^
неувидел. спбо
Lord NightKon
27.03.2010, 00:44
приветствую..
если кто может - посмотрите этот код.. вроде ошибок быть не должно, но нету паскаля под рукой.. если где ошибки какие - поправьте пожалуйста..
это так.. курсачь мой.. немного не доделан конечно, но тут-то и нужна ваша помощь.. алгоритм шифрования - двойной квадрат Уитстона.. мне бы всё это нанести на форму в делфи, что б было что-то вроде: http://i.piccy.info/i4/b8/aa/df22afa4f5adc6e42c178ad5dfbf.png
привожу код:
uses crt;
type
ttable=array[1..7,1..5] of char;
const
list:ttable=(('а', 'б','в','г','д'),
('е','ж','з','и','к'),
('л','м','н','о','п'),
('р','с','т','у','ф'),
('х','ц','ч','ш','щ'),
('ъ','ы','ь','э','ю'),
('я','.',',',':',' '));
{Степень перемешивания, с которой сформируются исходные таблицы}
mixdepth=1000;
procedure findxy(table:ttable;c:char;var x,y:byte);
var
p,o:byte;
begin
for o:=1 to 7 do
for p:=1 to 5 do
if table[o,p]=c then
begin
x:=p;
y:=o;
exit;
end;
end;
var
table1,table2:ttable;
p,o,p2,o2:byte;
i:integer;
c:char;
s,s2:string;
begin
{Заполним таблицы}
for o:=1 to 7 do
for p:=1 to 5 do
begin
table1[o,p]:=list[o,p];
table2[o,p]:=list[o,p];
end;
{Перемешаем таблицы}
randomize;
for i:=1 to mixdepth do
begin
{мешаем первую таблицу}
o:=random(7)+1;
p:=random(5)+1;
o2:=random(7)+1;
p2:=random(5)+1;
c:=table1[o,p];
table1[o,p]:=table1[o2,p2];
table1[o2,p2]:=c;
{Мешаем вторую таблицу}
o:=random(7)+1;
p:=random(5)+1;
o2:=random(7)+1;
p2:=random(5)+1;
c:=table2[o,p];
table2[o,p]:=table2[o2,p2];
table2[o2,p2]:=c;
end;
{Выведем таблицы на экран}
clrscr;
for o:=1 to 7 do
begin
for p:=1 to 5 do write(table1[o,p]:2);
write(' | ');
for p:=1 to 5 do write(table2[o,p]:2);
writeln;
end;
writeln('Введите текст который будет зашифрован используя только символы из таблиц:');
readln(s);
if odd(length(s)) then s:=s+' '; {Если длина нечётна, добавим пробел}
{Сформируем зашифрованую строку}
i:=1;
s2:='';
while i<length(s) do
begin
findxy(table1,s[i],p,o);
findxy(table2,s[i+1],p2,o2);
s2:=s2+table2[o,p2]+table1[o2,p];
inc(i,2);
end;
{Выведем зашифрованую строку}
writeln('Зашифрованая строка выглядит так:');
writeln(s2);
end.
alexey-m
27.03.2010, 13:35
Life7, вот попробуй, то что ты описал в первом варианте.
в свойствах второй кнопки сделай её невидимой, и расположи их друг на друге.
и при нажатии первой выведется текст1 и кнопка1 скроется, а кнопка2 появится и при её нажатии выведется текст2.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:='текст1';
Button1.Visible:=false;
Button2.Visible:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label1.Caption:='текст2';
end;
end.
p.s. ничего тут сложного нет
Зачем такие извращения, когда можно обойтись одной кнопкой:
procedure TForm1.Button1Click(Sender: TObject);
begin
case button1.tag of
0: begin
Label1.Caption:='текст1';
Button1.Tag:=1;
end;
1: begin
Label1.Caption:='текст2';
Button1.Tag:=0;
end;
end;
end;
heretic1990
27.03.2010, 14:58
alexey-m, согласен, но ведь я привёл пример как описал автор вопроса))
stepashka_
27.03.2010, 23:55
При установке компонента icq выдаёт вот это
[Предупреждение] Unit 'uMD5Hash' implicitly imported into package 'TICQClient'
Кто подскажет?
stepashka_
28.03.2010, 15:51
Как ставишь?
Открываю TICQClient.dpk
Потом в опциях среды ставлю путь к библиотеке
Жму компилировать и выдаёт это
heretic1990
28.03.2010, 15:53
stepashka_,
Как установить TICQClient:
0) Удалите предыдущий компонент TICQClient, если ставили его
1) Откройте TICQClient.dpk в Delphi
2) Перейдите в Menu->Tools->Environment Options->Library
3) Нажмите кнопку "..." напротив Library path
4) Добавьте путь в папку, где лежит TICQClient
5) Вернитесь к окошку открытого dpk
6) Нажмите Compile
7) Нажмите Install
stepashka_
28.03.2010, 16:53
stepashka_,
Как установить TICQClient:
0) Удалите предыдущий компонент TICQClient, если ставили его
1) Откройте TICQClient.dpk в Delphi
2) Перейдите в Menu->Tools->Environment Options->Library
3) Нажмите кнопку "..." напротив Library path
4) Добавьте путь в папку, где лежит TICQClient
5) Вернитесь к окошку открытого dpk
6) Нажмите Compile
7) Нажмите Install
Я так и делаю)) выдаёт ошибку
heretic1990
28.03.2010, 17:51
может у тебя этот компонент уже установлен (посмотри на вкладке samples)? или не соответствует версии компилятора?
heretic1990
28.03.2010, 18:44
подскажите как реализовать сворачивание программы в трей при нажатии на кнопку закрытия окна (при участии компонента CoolTrayIcon).
EndLeSSDre@M
28.03.2010, 19:07
http://forum.antichat.ru/showthread.php?t=160471
вот тут обсуждали подобную проблему, может поможет
InfectedM
28.03.2010, 20:26
RegExp.Expression := 'e-mail:(.+?)\s+\n';
if RegExp.Exec(memo1.text) then mail:=RegExp.Match[1];
Допустим я спарсил свою почту: support[at]main[at]qwe[at]abc[dot]mail.ru
как с помощью TRegExpr заменить все [at] на точки ,а [dot] на собаку
ps количество точек не известно
результат должен быть : support.main.qwe.abc@mail.ru
Подскажите плз как это реализовать через RegExp,а то ен могу разобраться
heretic1990
28.03.2010, 20:44
EndLeSSDre@M, не помогло((
вопрос ещё актуален!
EndLeSSDre@M
28.03.2010, 21:10
EndLeSSDre@M, не помогло((
вопрос ещё актуален!
хм.... ну если есть этот компонент то все просто:
CoolTrayIcon.HideMainForm;
это в кнопку добавь!
stepashka_
28.03.2010, 21:33
может у тебя этот компонент уже установлен (посмотри на вкладке samples)? или не соответствует версии компилятора?
Скачал заного компонент, всё ОК :cool:
heretic1990
28.03.2010, 21:36
хм.... ну если есть этот компонент то все просто:
CoolTrayIcon.HideMainForm;
это в кнопку добавь!
это то само собой, а мне надо чтобы при нажатии кнопки закрыть, которая рядом с кнопками свернуть и развернуть.
пробовал так:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
Application.Minimize;
end;
но проект вообще не закрывается, даже с помощью кнопки с действием close;
EndLeSSDre@M
28.03.2010, 21:43
сделай уж так тогда
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=caNone;
CoolTrayIcon.HideMainForm;
end;
а по идее, на сколько я щас соображаю... то если это будет в ивенти при закрытии формы, то ее никак не закрыть... или я просто чего то не знаю(((
в твоем случае можно просто кнопку закрыть сделать не активной...
heretic1990
28.03.2010, 22:47
EndLeSSDre@M, эта прога будит закрываться из popupmenu которое будит вызываться из трея, а не по средствам закрытия формы, кликая на кнопку закрыть она будит просто сворачиваться в трей. сворачивания то я добился с помощью Action := caNone; Application.Minimize; . но при этом программу вообще не закрыть(((
EndLeSSDre@M
28.03.2010, 22:59
пробуй этот код! должно помочь
procedure TForm1.Button1Click(Sender: TObject);
begin
ccc:=1;
Close;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if ccc=1 then
CanClose:=true
else
begin
CanClose:=false;
Application.Minimize;
end;
end;
end.
помогите найти пожалуйста самый большой учебник MidletPascal буду сидеть учить
EndLeSSDre@M
28.03.2010, 23:03
помогите найти пожалуйста самый большой учебник MidletPascal буду сидеть учить
в гугле забанили что ли??? ну сиди ты скачивай и проверяй где страниц больше... если все время искать что то готовенькое, то ничего в этой жизни не достигнешь!
EndLeSSDre@M, эта прога будит закрываться из popupmenu которое будит вызываться из трея, а не по средствам закрытия формы, кликая на кнопку закрыть она будит просто сворачиваться в трей. сворачивания то я добился с помощью Action := caNone; Application.Minimize; . но при этом программу вообще не закрыть(((
Как вариант:
PostMessage(FindWindow(nil, 'Form1'), wm_quit, 0, 0);
heretic1990
28.03.2010, 23:57
090808, большое спасибо !!!! помогло закрыть прогу!!!
всем спасибо вопрос исчерпан))
... интересненькая задачка))) я тут набросал по быстрому... щас еще подумаю и подредактирую.... буду рад если кто поможет доделать
да и исправьте ошибки... а то я не силен в этом)))
PHP код:
program Multik;
var N,K,zaec,volk,d,i:integer;
label 1;
BEGIN
read(N,K);
i:=0;
volk:=0;
zaec:=k; //ступенька зайца
d:=int(n/2); // максимальное количество шагов возможных на лестнице
for l=1 to d do //цикл перебора шагов
volk:=volk+2; //волк шагает через 2 ступеньки
zaec:=zaec+1; //заяц через одну
if zaec=volk then write(i) and goto 1; // если совпали то выводим и и заканчиваем программу
next l
write(i); //если не совпали то просто выводим 0 и заканчиваем программу
1:END.
Начал работать с winapi на delphi и возник вопрос:
Как сделать так, что бы окно, созданное CreateWindowEx, было по центру экрана?
s0l_ir0n
29.03.2010, 10:18
Начал работать с winapi на delphi и возник вопрос:
Как сделать так, что бы окно, созданное CreateWindowEx, было по центру экрана?
function CenterWindow(Wnd:HWND):boolean;
var
R:TRect;
X,Y,W,H:integer;
begin
GetWindowRect(Wnd, R);
W:=GetSystemMetrics(SM_CXSCREEN);
H:=GetSystemMetrics(SM_CYSCREEN);
X := (W div 2) - ((R.Right - R.Left) div 2);
Y := (H div 2) - ((R.Bottom - R.Top) div 2);
result:=SetWindowPos(Wnd, 0, X, Y, 0, 0, SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE)
end;
EndLeSSDre@M
29.03.2010, 10:41
... интересненькая задачка))) я тут набросал по быстрому... щас еще подумаю и подредактирую.... буду рад если кто поможет доделать
да и исправьте ошибки... а то я не силен в этом)))
Life7 я не понял, это че такое??? тупое набивание постов??? на сколько я помню это был мой пост, и слова точно такие же!
mailbrush
29.03.2010, 13:43
procedure TForm1.Button1Click(Sender: TObject);
var
WSAData1: WSAData;
my_sock: TSocket;
dest_addr: sockaddr_in;
buf: string;
res: Array [0..1024] of Char;
reslen: integer;
begin
WSAStartup($101,WSAData1);
my_sock := socket(AF_INET, SOCK_STREAM, 0);
dest_addr.sin_family := AF_INET;
dest_addr.sin_port:=htons(80);
dest_addr.sin_addr.S_addr := inet_addr('192.0.32.10');
connect(my_sock, dest_addr, SizeOf(dest_addr));
buf := 'GET / HTTP/1.1'+#10#13+'Host: example.com'+#10#13;
send(my_sock, buf, sizeof(buf), 0);
recv(my_sock, res, 128, 0); //здесь зависает
ShowMessage(res);
end;
Почему программа на строке
recv(my_sock, res, 128, 0);
зависает? Что я делаю неправильно в этом WinSock'e?
Что я делаю неправильно в этом WinSock'e?
в твоем случае надо в отдельном потоке работать с winsock (CreateThread)
slesh, в точку :) (или же можно проделать copymemory (в массив вида char))
buf := 'GET / HTTP/1.1'+#10#13+'Host: example.com'+#10#13;
send(my_sock, buf, sizeof(buf), 0);
заменяй на
buf := 'GET / HTTP/1.1'+#13#10+'Host: example.com'+#13#10#13#10;
send(my_sock, buf[1], length(buf), 0);
mailbrush
29.03.2010, 15:17
Спасибо. Теперь в этом проблема:
r:=1;
while(r > 0) do
begin
r := recv(my_sock, res, 128, 0);
end;
Опять зацикливается...
wolmer, работать в отдельном потоке вовсе не обязательно...
stepashka_
29.03.2010, 15:43
как сделать что бы после
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='1;
IdSMTP1.Password:='1';
IdMessage1.Body.Text:=' '+memo1.Text+' ;'+memo3.Text;
IdMessage1.From.Text:='1@yandex.ru';
IdMessage1.Recipients.EMailAddresses:='1@mail.ru';
IdMessage1.Subject:='accs';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Connect();
if IdSMTP1.Connected=true then
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect
end;
подскажите как сделать что бы после этой процедуры через определённое время вылетало ShowMessage с моим текстом...
GhostOnline
29.03.2010, 15:48
mailbrush ну видимо не может выйти из цикла т.к. (r > 0) выполняется
stepashka_ ну просто вставить ShowMesssage('Твой текст') после Disconnect. если я правильно тебя понял
через время..положи на форму TTimer. Enabled задай в false. На обработчиr OnTimer посади
ShowMesssage('Твой текст')
А в коде процедуры добавь:
Timer1.Interval := //тут твое время в миллисекундах
Timer1.Enbled := True;
EndLeSSDre@M
29.03.2010, 15:53
как сделать что бы после
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='1;
IdSMTP1.Password:='1';
IdMessage1.Body.Text:=' '+memo1.Text+' ;'+memo3.Text;
IdMessage1.From.Text:='1@yandex.ru';
IdMessage1.Recipients.EMailAddresses:='1@mail.ru';
IdMessage1.Subject:='accs';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Connect();
if IdSMTP1.Connected=true then
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect
end;
подскажите как сделать что бы после этой процедуры через определённое время вылетало ShowMessage с моим текстом...
sleep(3000);
ShowMessage('Hello');
это в конце проги вставь
stepashka_
29.03.2010, 16:18
sleep(3000);
ShowMessage('Hello');
это в конце проги вставь
Если добавить в конец то ShowMessage будет вылазить после запуска проги) а мне нужно что бы оно открывалось после нажатия на кнопку например через 10секунд))
EndLeSSDre@M
29.03.2010, 16:21
сделай такую процедуру:
Procedure MySleep(Sec:Integer);
Var I:Integer;
Begin
For I:=1 to Sec do
begin
Sleep(1000);
Application.ProcessMessages;
end;
end;
потом в кнопке ссылайся на нее
MySleep(тут количество секунд);
Showmessage('Hello');
stepashka_
29.03.2010, 16:49
сделай такую процедуру:
Procedure MySleep(Sec:Integer);
Var I:Integer;
Begin
For I:=1 to Sec do
begin
Sleep(1000);
Application.ProcessMessages;
end;
end;
потом в кнопке ссылайся на нее
MySleep(тут количество секунд);
Showmessage('Hello');
неа :(
пробую вот так
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='1;
IdSMTP1.Password:='1';
IdMessage1.Body.Text:=' '+memo1.Text+' ;'+memo3.Text;
IdMessage1.From.Text:='1@yandex.ru';
IdMessage1.Recipients.EMailAddresses:='1@mail.ru';
IdMessage1.Subject:='accs';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Connect();
if IdSMTP1.Connected=true then
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
Sleep(10000); //ждём 10 сек
ShowMessage('ТУТ то что нод выводить');
Close;
end;
вылетает при компиляции
[Ошибка] Unit1.pas(76): Missing operator or semicolon
[Фатальная Ошибка] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
красная строка на Sleep(10000); //ждём 10 сек :(
EndLeSSDre@M
29.03.2010, 16:55
Как нет то.. у тя вот так должно быть:
Procedure MySleep(Sec:Integer);
Var I:Integer;
Begin
For I:=1 to Sec do
begin
Sleep(1000);
Application.ProcessMessages;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='1'; //вот тут у тя ковычки не хватало!
IdSMTP1.Password:='1';
IdMessage1.Body.Text:=' '+memo1.Text+' ;'+memo3.Text;
IdMessage1.From.Text:='1@yandex.ru';
IdMessage1.Recipients.EMailAddresses:='1@mail.ru';
IdMessage1.Subject:='accs';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Connect();
if IdSMTP1.Connected=true then
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
MySleep(10); //ссылка на процедуру
ShowMessage('Текст');
Close;
end;
stepashka_
29.03.2010, 17:33
Как нет то.. у тя вот так должно быть:
Procedure MySleep(Sec:Integer);
Var I:Integer;
Begin
For I:=1 to Sec do
begin
Sleep(1000);
Application.ProcessMessages;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='smtp.yandex.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='1'; //вот тут у тя ковычки не хватало!
IdSMTP1.Password:='1';
IdMessage1.Body.Text:=' '+memo1.Text+' ;'+memo3.Text;
IdMessage1.From.Text:='1@yandex.ru';
IdMessage1.Recipients.EMailAddresses:='1@mail.ru';
IdMessage1.Subject:='accs';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Connect();
if IdSMTP1.Connected=true then
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
MySleep(10); //ссылка на процедуру
ShowMessage('Текст');
Close;
end;
[Ошибка] Unit1.pas(86): Missing operator or semicolon
[Ошибка] Unit1.pas(46): Unsatisfied forward or external declaration: 'TForm1.MySleep'
[Фатальная Ошибка] Project1.dpr(5): Could not compile used unit 'Unit1.pas' :(
AlexTheC0d3r
29.03.2010, 17:35
сделай такую процедуру:
Procedure MySleep(Sec:Integer);
Var I:Integer;
Begin
For I:=1 to Sec do
begin
Sleep(1000);
Application.ProcessMessages;
end;
end;
потом в кнопке ссылайся на нее
MySleep(тут количество секунд);
Showmessage('Hello');
Application.ProcessMessages;
не гарантируется, что будет выполняться 1мс
wolmer, работать в отдельном потоке вовсе не обязательно...
конечно не обязательно, но чтобы программа не подвисала при приеме/отправке данных - нужно создавать отдельный поток (покрайне мере я другого варианта никогда не встречал (чтобы программа не подвисала при send/recv))
ну а если идет речь о мелких данных (send/recv) то можно и без выд. потока обойтись
(с удовольствием послушаю как можно обойтись без createthread при приеме/отправке больших данных (если же такое возможно) :) )
function CenterWindow(Wnd:HWND):boolean;
var
R:TRect;
X,Y,W,H:integer;
begin
GetWindowRect(Wnd, R);
W:=GetSystemMetrics(SM_CXSCREEN);
H:=GetSystemMetrics(SM_CYSCREEN);
X := (W div 2) - ((R.Right - R.Left) div 2);
Y := (H div 2) - ((R.Bottom - R.Top) div 2);
result:=SetWindowPos(Wnd, 0, X, Y, 0, 0, SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE)
end;
Спасибо!
А как считать содержимое edit1?
Привет всем! Подскажите пожалуйста как написать прогу которая будет скрывать мой ip не как прокси, а чтобы можно было любые цифры написать типа: 000.000.000
В Pascal или делфи, если это конечно возможно, то напишите пример пожалуйста!
Ну если такого нельзя сделать, то может можно как то скрыть IP через CMD !
Зарание спасибо!)
stepashka_
29.03.2010, 23:14
Привет всем! Подскажите пожалуйста как написать прогу которая будет скрывать мой ip не как прокси, а чтобы можно было любые цифры написать типа: 000.000.000
нельзя.
maestro-ant
30.03.2010, 00:56
А как считать содержимое edit1?
:= Edit1.text;
;)
:= Edit1.text;
;)
мне нужно на winapi!
s0l_ir0n
30.03.2010, 06:46
Спасибо!
А как считать содержимое edit1?
The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied.
int GetWindowText(
HWND hWnd, // handle of window or control with text
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum number of characters to copy
);
Parameters
hWnd
Identifies the window or control containing the text.
lpString
Points to the buffer that will receive the text.
nMaxCount
Specifies the maximum number of characters to copy to the buffer. If the text exceeds this limit, it is truncated.
Return Values
If the function succeeds, the return value is the length, in characters, of the copied string, not including the terminating null character. If the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid, the return value is zero. To get extended error information, call GetLastError.
This function cannot retrieve the text of an edit control in another application.
Remarks
This function causes a WM_GETTEXT message to be sent to the specified window or control.
This function cannot retrieve the text of an edit control in another application.
подскажите плз вот есть прога у нее есть файл ини там было прописанно все кроме тго что я выдили красным цветом
usesocks=1
; таймаут сокса (в секундах)
sockstimeout=60
; кол-во потоков (кол-во одновременно обрабатывающихся акков)
maxthread=10
;msgperacc=0 все сообщения слать разом
;msgperacc=1 одно сообщение = один получатель
;msgperacc=х х сообщений на одного получателя
msgperacc=10
;contactsperacc=0 добавить все контакты
;contactsperacc=х добавить х контактов
contactsperacc=0
; socks grabbing
socksurl=http://awmproxy.com/socks_good_proxy.txt
sockstuptime=7
; "судья" для чекинга соксов. соксы не чекаются если если checkurl не задан
;checkurl=http://actualtech.ru/judges/azenv.php
;checkurl=http://citrix.unimatrix-one.com/proxysecurity/azenv.php
;checkurl=http://www.cooleasy.com/azenv.php
;checkurl=http://membres.lycos.fr/proxyworld/azenv.php
;http://members.lycos.nl/proxyworld31/azenv.php
;http://pinkcat.extra.hu/K9/azenv.php
;http://proxyjudge.hell-spy.de/
;http://proxytest.pr.funpic.de/
;http://proxywordl.hbg.fr/azenv.php
;http://proxywoorld.ovh.org/azenv.php
;http://proxyworld.ifrance.com/azenv.php
;http://robs.atwebpages.com/azenv.php
;http://sevy.eu.org/azenv.php
;http://www.belgarion.com/images/azenv.php
;http://www.cship.info/azenv.php
;http://www.pr0.net/deny2/azenv.php
;http://www.proxy-heaven.com/azenv.php
;http://www.proxyjudge.biz/az.php
;http://www.proxysecurity.com/azenv.php
Retries=2
mobile=1
captchaurl=http://captchabot.com/xmlrpc/axmlrpc.php
captchalogin=lol
captchapass=yes
Мне надо чтобы прга брала с данного линка прокси и обновляла его каждые 7 минут,она добавлять добавляет но не столбиком а просто в строчку и определяет все 500 прокси в строчке как один,что можно дописать чтоб она брала их и ставили строчкой??
Помогите пожалуйста с делфи, точнее с визуальным кодингом. Написал маленьку программу(консольную), надо ее визуально теперь сделать. Книгу начал читать, но до завтра наверно не успею... Кто-то может помочь? Если да отпишитесь пожалуйста в ПМ. Ну или хотя бы какой-то учебник непосредственно по визуальному кодингу(краткое).
EndLeSSDre@M
30.03.2010, 21:56
лучше б тут само задание выложил... ответь в пм
Помогите пожалуста решить такую задачку:
Есть поле X на Y. Его нжно заполнить N квадратами. Нужно подсчитать наибольший из возможных размер квадрата.
Например, поле 100x100, n=3, то на выходе будет 50.
SkyLine32
31.03.2010, 06:35
Очень прошу привести пример простого парсера html. К примеру выдернуть из <title></title> заголовок.
Очень прошу привести пример простого парсера html. К примеру выдернуть из <title></title> заголовок.
forum.antichat.ru/threadnav119447-1-10.html
пост #11
SkyLine32
31.03.2010, 07:41
forum.antichat.ru/threadnav119447-1-10.html
пост #11
А нет что нибуть попроще? Чтобы не подключать RegExpr.pas а то у меня ошибку Error (reeNoInpitStringSpecified); выдаёт :mad:
З,Ы... Не, всё норм, разобрался.
Сделал отправку прием UDP но что не работает:
procedure TForm1.Button1Click(Sender: TObject); //Отправляем текст (здесь все работает все отправляется)
var
ws:TWSAData;
UDP_sock:TSocket;
sockaddr_in:TSockAddrIn;
s:string;
begin
WsaStartup($202,ws);
s:=form1.Edit1.Text;
UDP_sock:=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sockaddr_in.sin_family:=AF_INET;
sockaddr_in.sin_port:=htons(8765);
sockaddr_in.sin_addr.s_addr:=inet_addr('127.0.0.1' );
if Connect(UDP_sock, sockaddr_in, SizeOf(sockaddr_in))<>0 then
begin
closesocket(UDP_sock);
exit;
end;
send(UDP_sock,s[1],length(Form1.Edit1.text),0);
closesocket(UDP_sock);
end;
procedure TForm1.Button2Click(Sender: TObject); //Открытие сокета на прием
var
ws:TWSAData;
sockaddr_in:TSockAddrIn;
s:string;
begin
WsaStartup($202,ws);
s:=form1.Edit1.Text;
UDP_sock2:=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sockaddr_in.sin_family:=AF_INET;
sockaddr_in.sin_port:=htons(8765);
sockaddr_in.sin_addr.s_addr:=INADDR_ANY;
//Сюда надо что то поставить чтобы сокет принимал данные, но что???
form1.Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject); //Прием в memo1
var
tmp_buf:array[0..1024] of char;
begin
form1.Timer1.Enabled:=true;
recv(UDP_sock2,tmp_buf,1024,0);
form1.Memo1.Lines.Add(tmp_buf);
end;
end.
В чем проблема?
Сделал отправку прием UDP но что не работает:
procedure TForm1.Button1Click(Sender: TObject); //Отправляем текст (здесь все работает все отправляется)
var
ws:TWSAData;
UDP_sock:TSocket;
sockaddr_in:TSockAddrIn;
s:string;
begin
WsaStartup($202,ws);
s:=form1.Edit1.Text;
UDP_sock:=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sockaddr_in.sin_family:=AF_INET;
sockaddr_in.sin_port:=htons(8765);
sockaddr_in.sin_addr.s_addr:=inet_addr('127.0.0.1' );
if Connect(UDP_sock, sockaddr_in, SizeOf(sockaddr_in))<>0 then
begin
closesocket(UDP_sock);
exit;
end;
send(UDP_sock,s[1],length(Form1.Edit1.text),0);
closesocket(UDP_sock);
end;
procedure TForm1.Button2Click(Sender: TObject); //Открытие сокета на прием
var
ws:TWSAData;
sockaddr_in:TSockAddrIn;
s:string;
begin
WsaStartup($202,ws);
s:=form1.Edit1.Text;
UDP_sock2:=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sockaddr_in.sin_family:=AF_INET;
sockaddr_in.sin_port:=htons(8765);
sockaddr_in.sin_addr.s_addr:=INADDR_ANY;
//Сюда надо что то поставить чтобы сокет принимал данные, но что???
form1.Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject); //Прием в memo1
var
tmp_buf:array[0..1024] of char;
begin
form1.Timer1.Enabled:=true;
recv(UDP_sock2,tmp_buf,1024,0);
form1.Memo1.Lines.Add(tmp_buf);
end;
end.
В чем проблема?
за отправку по udp отвечает функция sendto (прием - recvfrom)
А можно описание всех 6 параметров?
А можно описание всех 6 параметров?
каких еще параметров? (конкретнее)
вообщем вбивай в гугл "udp winsock" и будет тебе счастье :) (да и кстати, connect тоже вроде не надо делать при udp)
Продолжаются вопросы про winapi...
Как выполнить функцию при открытии формы? то есть как в vcl formcreate
transserg
31.03.2010, 16:59
TrueBit если ты в качестве формы используешь диалог из ресурсов то в функции обработки сообщения надо обработать сообщение WM_INITDIALOG
если окно создаешь сам то сообщение WM_CREATE
http://msdn.microsoft.com/en-us/library/ms632619(VS.85).aspx
crazyserega1994
31.03.2010, 20:43
procedure TForm1.Button1Click(Sender: TObject);
var page:string;
param:tidmultipartformdatastream;
begin
if (Length(Edit1.Text) > 0) and (Length(Edit2.Text) > 0) then
begin
param:=tidmultipartformdatastream.Create;
param.AddFormField('Login',Edit1.Text);
param.AddFormField('Domain','mail.ru');
param.AddFormField('Password',Edit2.Text);
param.AddFormField('page','http://wap.my.mail.ru');
page:=W.Post('http://my.mail.ru/cgi-bin/auth?noclear=1',param)
if pos('Неверное имя пользователя или пароль',page) > 0 then
Statusbar1.Panels[0].Text:='Wrong password!'
else
Statusbar1.Panels[0].Text:='Logged!'
end;
end;
При вводе фейк данных все нормально, в строке состояние пишет "неверное имя...", если же пишу настоящие данные, то тогда выскакует ошибка "Socket error # 11004" :3
По 5956 посту подскажите плиз!
EndLeSSDre@M
31.03.2010, 23:52
По 5956 посту подскажите плиз!
на каком языке то хоть?
и уточни задание плиз! например как так при поле 100х100 максимальный квадрат 50? 50 это вообще что такое?
советую ответить как можно скорее))) пока я спать не ушел)
ну ответа так и не дождался... пошел спать... как хочешь
Ice_VeNOm
01.04.2010, 14:59
Как реализовать многопоточность на delphi 2010? Там как-то все отличается....
n1ghtstalker
01.04.2010, 16:48
на каком языке то хоть?
и уточни задание плиз! например как так при поле 100х100 максимальный квадрат 50? 50 это вообще что такое?
советую ответить как можно скорее))) пока я спать не ушел)
ну ответа так и не дождался... пошел спать... как хочешь
1. Тема Delphi/pascal
2. я так понял можно задать матрицу 100x100
при n=3 выстроиться 4 квадрата со сторонами 50x50
ну если на то пошло то 50x50 не будет наибольшим квадратом. 96x96 самый больший из возможных. (для случая n=3),остальные 2 квадрата имеют стороны 2x2
те нахождение максимального квадрата можно свести к 100-n*2
1. Тема Delphi/pascal
ну если на то пошло то 50x50 не будет наибольшим квадратом. 96x96 самый больший из возможных. (для случая n=3),остальные 2 квадрата имеют стороны 2x2
те нахождение максимального квадрата можно свести к 100-n*2
50х50 самый наибольший, я думаю имеется ввиду нужно разместить n квадратов одинакового размера
и уточни задание плиз! например как так при поле 100х100 максимальный квадрат 50? 50 это вообще что такое?
____
|1|1|
|1|_|
поле 100 на 100, 1 это квадрат со сторонами 50 на 50
Пишу авторегер вк, написал пробную версию, но надо записывать в поля все данные (имя, фамилия.пол и т.д.)
Хочу сделать так чтобы например поля заполнялись по рандому из файла (чтобы прога это делала внутри себя, но полей чтобы вообще не было, было только - лог, капча, или ключ анти капчи, я не знаю точно смогу лианти капчу запихнуть, если знаете скажите плиз).
Тот кто мне всё объяснит могу заплатить даже по его желанию от 5 до 15 баксов.
ICQ 428810406
Пишу авторегер вк, написал пробную версию, но надо записывать в поля все данные (имя, фамилия.пол и т.д.)
Хочу сделать так чтобы например поля заполнялись по рандому из файла (чтобы прога это делала внутри себя, но полей чтобы вообще не было, было только - лог, капча, или ключ анти капчи, я не знаю точно смогу лианти капчу запихнуть, если знаете скажите плиз).
Тот кто мне всё объяснит могу заплатить даже по его желанию от 5 до 15 баксов.
ICQ 428810406
функция random тебе в помощь (file.strings[random(file.count-1)] (file: tstringlist))
как записать рандом с помощью этой функции для такой строки:
Data.Add('user.password1='+PasswordEdit.Text);
crazyserega1994
01.04.2010, 23:14
for i:=1 to 3 do
begin
sleep(5000);
page:=W.Get('http://antigate.com/res.php?key=atatatata&action=get&id='+capid);
if pos('|',page) > 0 then
begin
showmessage('captcha found');
position:=pos('|',page);
delete(page,1,position);
capnumber:=page;
showmessage(capnumber);
Exit;
end;
end;
showmessage('EVERYTHING IS FINE FTW?');
Есть этот цикл, я раставил 3 showmessages чтобы посмотреть где скрипт не работает, в самом цикле все нормально, все 2 мессаги показуется, а вот showmessage('EVERYTHING IS FINE FTW?'); которая за цыклом не работает, и весь за ней код тоже, WTF?
ну если на то пошло то 50x50 не будет наибольшим квадратом. 96x96 самый больший из возможных. (для случая n=3),остальные 2 квадрата имеют стороны 2x2
те нахождение максимального квадрата можно свести к 100-n*2
Забыл уточнить, естественно нужны равные квадраты.
EndLeSSDre@M
01.04.2010, 23:27
Забыл уточнить, естественно нужны равные квадраты.
если я правильно догнал, то: надо тупо найти площадь поля, потом разделить ее на N и потом искать наибольший целый корень из этого, тем самым мы находим максимальную сторону квадрата.... так? уточни если я правильно думаю
EndLeSSDre@M
02.04.2010, 00:05
ну конечно, опять полный игнор.... такое ощущение что это мне ппц как нужна эта прога(((
если я правильно догнал, то: надо тупо найти площадь поля, потом разделить ее на N и потом искать наибольший целый корень из этого, тем самым мы находим максимальную сторону квадрата.... так? уточни если я правильно думаю
Нет, не правильно, даже тот же тест с 100 на 100 и n = 3. Ответ получиться 57, а не 50, потому что оставшееся часть площади тоже распределяется по квадрату, а не должна
for i:=1 to 3 do
begin
sleep(5000);
page:=W.Get('http://antigate.com/res.php?key=atatatata&action=get&id='+capid);
if pos('|',page) > 0 then
begin
showmessage('captcha found');
position:=pos('|',page);
delete(page,1,position);
capnumber:=page;
showmessage(capnumber);
Exit;
end;
end;
showmessage('EVERYTHING IS FINE FTW?');
Есть этот цикл, я раставил 3 showmessages чтобы посмотреть где скрипт не работает, в самом цикле все нормально, все 2 мессаги показуется, а вот showmessage('EVERYTHING IS FINE FTW?'); которая за цыклом не работает, и весь за ней код тоже, WTF?
Возможно вся фишка в вызове операции Exit;?)
Qb1024...вот, вроде так
function min(a , b: integer): integer;
begin
min:=a;
if b<a then min:=b;
end;
var
n, i, k, m, rez: integer;
begin
readln(k, m);
readln(n);
rez:=0;
For i:=1 to min(k, m) do
if ((k div i) * (m div i)>=n) then rez:=i;
writeln(rez);
readln;
end.
fenixelite
02.04.2010, 05:44
crazyserega1994, ну и правильно, что не выполняется. Exit используется для выхода из подпрограммы, а в основном блоке это эквивалентно завершению всей программы.
Для выхода из цикла используй break;
Qb1024...вот, вроде так
function min(a , b: integer): integer;
begin
min:=a;
if b<a then min:=b;
end;
var
n, i, k, m, rez: integer;
begin
readln(k, m);
readln(n);
rez:=0;
For i:=1 to min(k, m) do
if ((k div i) * (m div i)>=n) then rez:=i;
writeln(rez);
readln;
end.
пасиб, затестим.
Просто я редко онлайн бываю, поэтому и отвечаю неоперативно.
Спасибо! Вреде всё правильно работает!
crazyserega1994
02.04.2010, 21:59
crazyserega1994, ну и правильно, что не выполняется. Exit используется для выхода из подпрограммы, а в основном блоке это эквивалентно завершению всей программы.
Для выхода из цикла используй break;
Та уже понял, опечатку сделал ;3
crazyserega1994
02.04.2010, 22:34
Много уже видел многопоточные брутеры, регерры и т.п. но никак не могу понять, как делать программу многопоточной в делфи? МОжет есть статья какайнить или учебник/урок? Какой компонент используется?
EndLeSSDre@M
02.04.2010, 22:44
Много уже видел многопоточные брутеры, регерры и т.п. но никак не могу понять, как делать программу многопоточной в делфи? МОжет есть статья какайнить или учебник/урок? Какой компонент используется?
Поиск в гугле со словами "Delphi Многопоточные приложения" и се! неужели так трудно? *не в обиду*
transserg
02.04.2010, 22:54
crazyserega1994
Вот тут тебе думаю хватит информации что и как (http://forum.vingrad.ru/forum/topic-60076.html)
Привет всем! Кто может мне подсказать где взять русификатор для delphi 7, в delphi после написания программы превратить ее в exe файл ну или что нить другое чтобы на компах без delphi запускалась? подскажите пожалуйста я просто только недавно начал пробывать писать проги!!!!!
icqnum...тут (http://www.softok.org/coding/delphi/4837prog.html) вроде норм русификатор, но лучше забудь про него, русифицировать Delphi это грех :confused: На счет exe, то после запуска программы в Delphi, в папке с программой появляется exe.
GhostOnline
03.04.2010, 11:49
Много уже видел многопоточные брутеры, регерры и т.п. но никак не могу понять, как делать программу многопоточной в делфи? Может есть статья какайнить или учебник/урок? Какой компонент используется?
Компонент?? Ты смеешься? Бросил на форму компонент и получил многопоточность? ЛОЛ
icqnum...тут (http://www.softok.org/coding/delphi/4837prog.html) вроде норм русификатор, но лучше забудь про него, русифицировать Delphi это грех :confused: На счет exe, то после запуска программы в Delphi, в папке с программой появляется exe.
Чет я не могу найти куда сохраняються exe файлы, а оеи полюбому сохраняться если при закрытие программы нажму "да". можешь мне путь прописать а я там дальше разберусь
transserg
03.04.2010, 12:29
icqnum ее надо сначала скомпилировать чтоб получить exe окрой проект нажми F9 он ее скомпилирует из запуситит... если ты созраняеш Ctrl+S или fail>save то ты сохраняешь исходный код
все равно не пойму))))))ну нажимаю F9 высвечиваеться окно Replace Text что далбше делать
fenixelite
03.04.2010, 13:57
Ищи уроки по Delphi и иди учи. Хотя раз ты даже прогу скомпилить не можешь, то лучше начни с pascal.
P.S НЕ понимаю людей кто на такие программы(Delphi, Фотошоп и др. ) ставит русификаторы. Как по мне, это извращение....
GhostOnline
03.04.2010, 14:01
icqnum специально для тебя: http://www.intuit.ru/department/pl/intdelphi/
Компонент?? Ты смеешься? Бросил на форму компонент и получил многопоточность? ЛОЛ
Смеется только и можем? По вопросу есть компонент TThread, но лучше сразу переходи на апи там не так тяжело. Будет и быстрее и без глюков.
GhostOnline
03.04.2010, 21:01
Смеется только и можем? По вопросу есть компонент TThread, но лучше сразу переходи на апи там не так тяжело. Будет и быстрее и без глюков.
Нубище, TThread это класс
И у нормальных людей он кстати не глючит. Если грамотно синхронизировать.
Voland-791
03.04.2010, 21:10
А как сделать чтобы при нажатии на кнопку результат запысывался в строку состояния?
GhostOnline
03.04.2010, 21:18
Результат чего? = )
Если ты про статус бар то
StatusBar1.SimpleText := 'Результат';
winlogon.exe
03.04.2010, 22:15
Как в делфи приложении вывести страничку сайта?
GhostOnline
03.04.2010, 22:19
Положить на форму TWebBrowser.
Свойство Silent лучше поставить в true
WebBrowser.Navigate(URL);
Как в делфи приложении вывести страничку сайта?
Компонент TWebBrowser.
Плиз нужен совет.
Нужно вывести мыло:пароль
существуют строки:
1. Пароль
try
Fil.LoadFromFile('password1.txt');
Fil.LoadFromFile('password2.txt');
except
Showmessage('Файл не найден');
end;
Temp:=fil.strings[random (fil.count-1)];
Data.add ('user.password1='+temp);
Data.add ('user.password2='+temp);
2. Логин (от мыла , до @)
Data.Add('user.login='+fil.strings[random(fil.count-1)]);
Как мне то что получилось после реги, то есть мыло:пароль вывести в мемо ?
Memo1.Lines.Add(''); - что в скобках писать ? или как то строки можно вписать, то есть их номера.
Спасибо заранее!
Vlad&slav
03.04.2010, 23:48
как сделать какоето действие с каждой строкой из текстовика
дайте примерчик хороший плиз)
Как отследить нажатие горячих клавишь?
Например, если нажата комбинация alt f4, тогда вылазиет мессаджбокс с каким то текстом.
ps Пример нужен для winapi.
AlexTheC0d3r
04.04.2010, 00:56
как сделать какоето действие с каждой строкой из текстовика
дайте примерчик хороший плиз)
var textFile: TStringList;
i: integer;
begin
textFile:=TStringList.Create;
textFile.LoadFromFile('Путь_К_текстов ку');
for i:=0 to textFile.Count - 1 do begin
//здесь что-то делаем, обращаясь к конкретной строке как textFile[i]
end;
end;
end.
легко...
Как отследить нажатие горячих клавишь?
Например, если нажата комбинация alt f4, тогда вылазиет мессаджбокс с каким то текстом.
ps Пример нужен для winapi.
http://www.cyberguru.ru/delphi-sources/keyboard/perekhvat-hook-klaviatury-programma-sendkeys.html
AlexTheC0d3r
04.04.2010, 00:59
Плиз нужен совет.
Нужно вывести мыло:пароль
существуют строки:
1. Пароль
try
Fil.LoadFromFile('password1.txt');
Fil.LoadFromFile('password2.txt');
except
Showmessage('Файл не найден');
end;
Temp:=fil.strings[random (fil.count-1)];
Data.add ('user.password1='+temp);
Data.add ('user.password2='+temp);
2. Логин (от мыла , до @)
Data.Add('user.login='+fil.strings[random(fil.count-1)]);
Как мне то что получилось после реги, то есть мыло:пароль вывести в мемо ?
Memo1.Lines.Add(''); - что в скобках писать ? или как то строки можно вписать, то есть их номера.
Спасибо заранее!
непонятный текст... выложи исходник
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot