Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: aqwapaq
Дата сообщения: 12.02.2008 10:20
Создал VCL. Удалил форму.
Почему не работает так составленный код?




Код:
program Phttp5435;

uses
Forms, IdHTTP,IdComponent,SysUtils, IdBaseComponent;

{$R *.res}
var
POSTData: TStringList;
begin
POSTData := TStringList.create;
POSTData.add('modem_log_st_poe=&hang_up_st_poe=Disconnect&message=');
IdHTTP1.Post('http://192.168.0.1/Status.htm/st_poe.cgi' ,POSTData);
end;
end.
Автор: shilder
Дата сообщения: 12.02.2008 10:32
aqwapaq

может потому что надо объявить переменную IdHTTP1 ? :)


Код:
var
IdHTTP1: TIdHTTP;
Автор: aqwapaq
Дата сообщения: 12.02.2008 10:46
OK!
Объявил:
var
IdHTTP1: TIdHTTP;
POSTData: TStringList;

Теперь новые ошибки:

[DCC Error] Project1.dpr(10): E2003 Undeclared identifier: 'TStringList'
[DCC Error] Project1.dpr(17): E2066 Missing operator or semicolon
[DCC Error] Project1.dpr(18): E2066 Missing operator or semicolon
[DCC Error] Project1.dpr(19): E2250 There is no overloaded version of 'Post' that can be called with these arguments

PS. как и где правильно объявить 'TStringList'?
Автор: shilder
Дата сообщения: 12.02.2008 10:48
ну а справка-то тебе на что ? :)


Код:
uses classes
Автор: dene14
Дата сообщения: 12.02.2008 11:10
Граждане и гражданочки программисты!

Помогите ламаку... Как инициализировать в ReportBuilder'e 10.02 End-User Design ? Репорт выводится норм, хочу сделать возможность редактирования и сохранения/загрузки шаблона, а не получается никак вызвать Designer по кнопке...

Подскажите что нужно в procedure TForm.ButtonClick(Sender: TObject); указать и какие ещё процедурки нужны...
Автор: aqwapaq
Дата сообщения: 12.02.2008 11:11
Спасибо помогло=)

Только после запуска
First chance exception at $7C812A7B. Exception class EAccessViolation with message 'Access violation at address 0043666C in module 'cscasc.exe'. Read of address 00000128'. Process cscasc.exe (10820)


и подсвечена строка:

IdHTTP1.Post('http://192.168.0.1/Status.htm/st_poe.cgi' ,POSTData);


Неужели консольное приложение не может корректно работать с Indy?
Или Delphi ругается на другое?
Автор: vserd
Дата сообщения: 12.02.2008 12:13
aqwapaq

Цитата:
Неужели консольное приложение не может корректно работать с Indy?

Может.

Сходите в магазин и купите книжку по DElphi. А потом читать главу по объектам, до тех пор пока не осознаете что объекты нужно создавать и разрушать. И если за вас это делает среда когда вы работаете с формами, то это не оправдание собственного не знания.

IdHTTP1 дядя Пушкин создавать будет? или все таки aqwapaq?
Автор: waik
Дата сообщения: 12.02.2008 12:16
Мда.. ребзя! Всё таки от делфи не только польза но и вред...
Обьекты сами по себе ни откуда не беруться и никуда не деваются. Зачем им всем метод create понаделали разработчики?

StringList создали , а IdHTTP1 само что-ли рождается. Давайте последовательно при запуске программы создадим все что нам нужно, попользуем и уничтожим при выходе.


ЗЫ. Опс опоздал немного... Сори за повтор.
Автор: aqwapaq
Дата сообщения: 12.02.2008 13:03
Понял=)

вот что получилось:


Код:
program cscasc;

{$APPTYPE CONSOLE}

uses
SysUtils,
IdHTTP,
IdComponent,
classes;
//type
//TIdHTTP = class(TIdCustomHTTP);

var
IdHTTP1: TIdHTTP;
POSTData: TStringList;


begin
POSTData := TStringList.Create;
//IdHTTP1:= IdHTTP;
try
{$R *.res}

POSTData.add('modem_log_st_poe=&hang_up_st_poe=Disconnect&message=');
IdHTTP1.Post('http://192.168.0.1/Status.htm/st_poe.cgi' ,POSTData);


finally
POSTData.Free;

end;
end.
Автор: waik
Дата сообщения: 12.02.2008 13:19
aqwapaq

Цитата:
Понял=)


Неа не понял....

Объекты НАДО создавать!!

Вместо этого
//IdHTTP1:= IdHTTP;

вписывай
IdHTTP1:= TIdHTTP.Create(nil);

после
POSTData.Free;

вписывай
IdHTTP1.Free;

Это минимум что нужно.

aqwapaq

Цитата:
Создал VCL.
А вот это круто! Я бы не смог... Немного постебаться..Не пинайте.
Автор: aqwapaq
Дата сообщения: 12.02.2008 13:29
waik мой респект!

Все работает отлично!
Большое спасибо всем кто принимал участие и давал советы!
Автор: Rus007
Дата сообщения: 12.02.2008 14:08
Ну так есть или нет у кого нибудь код программы шифрования по маршрутам Гамильтона?
Автор: SERGE_BLIZNUK
Дата сообщения: 12.02.2008 21:01
Rus007
похоже, что Вам самому прийдётся писать (ну или заказывать кому-то, видел продают за 200 рублей исходники на C++ Builder...)
а вот прочитать про алгоритм шифрования можно по нижеуказанным ссылкам (нашёл через поиск):
http://www.snipetz.com/asu/informsecure/4.html
http://www.bashnet.ru/~steelrat/secure/c4.htm
Автор: kotel
Дата сообщения: 13.02.2008 08:32
Помогите написать максимально быструю функцию циклического сдвига вправо\влево. Двигать нужно 4х байтное число.
Я умнее чем
var
ROR:cardinal;
Count:byte;
Result:=(ROR shr Count) or (ROR shl (32-Count));

не придумал.
Автор: greenpc
Дата сообщения: 13.02.2008 10:42
kotel

Код:
function ROL(a, s: LongWord): LongWord;
asm
mov ecx, s
rol eax, cl
end;

function ROR(a, s: LongWord): LongWord;
asm
mov ecx, s
ror eax, cl
end;

Автор: kotel
Дата сообщения: 13.02.2008 12:00
greenpc
Спасибо, что то не работает
"a" нигде не фигурирует внутри тела функции это ничего?
Автор: greenpc
Дата сообщения: 13.02.2008 13:40
kotel
a - значение которое двигаешь
s - на сколько двигать

Цитата:
"a" нигде не фигурирует внутри тела функции это ничего?

по умолчанию передается в регистр eax
PS : все работает
ror(4,2) = 1
ror(1,2)= 40000000H
Автор: shilder
Дата сообщения: 13.02.2008 13:41
kotel

смотря какой calling convention.... :)

greenpc
а возвращаемое через eax ? тогда второй аргумент наверное в edx ? :) можно тогда

Код:
mov ecx, edx
Автор: greenpc
Дата сообщения: 13.02.2008 13:49
shilder

Цитата:
тогда второй аргумент наверное в edx

угадал delphi так и делает
просто читабельней

Автор: kotel
Дата сообщения: 13.02.2008 18:18
всем спасибо за помощь
но пока я не дописал в конце функции
mov result,eax
работало неправильно (в асме ничего не понимаю, просто решил, что как-то мне нужно значение вернуть)
но прикол не в этом, главное, что быстрее не стало...
Автор: shilder
Дата сообщения: 13.02.2008 20:46
kotel
дык.... а быстрее операции просто нет по-моему :) так что ускоряй в другом месте )

как говорится экспоненциальный алгоритм, переписанный на ассемблере не станет логарифмическим
Автор: kotel
Дата сообщения: 14.02.2008 07:39
shilder
Я вот думаю как ускорить, но ума не хватает... (не программер я)
Я рассчитываю в цикле некую хеш функцию. Каждое следующее значение есть функция от предыдущего. В принципе там нет ничего сложного - ror, rol, xor, and над 4х байтными числами и все это многократно повторяется.
Один процессор загружен полностью второй отдыхает.
У меня получилось миллион расчетов в 1.5 секунды, хотя знаю что можно довести до 10-12 в секунду...
Автор: o0
Дата сообщения: 14.02.2008 11:05
kotel
навскидку можно считать в n-потоков для n-процесорных машин.
для 2х процесорн:
разбиваете логику на два потока. запускаете их, а внутри потоков юзаете SetThreadAffinityMask, чтоб код выполнялся на такомто процесоре.

ээ.. неверно.. ваш цыкл нельзя разбить на разн процессоры поэтому довольствуйтесь тем что есть

ну и в идеале поищите nvidia мануалы для использования их графических процессоров, коих много и производительность много выше.
Автор: kotel
Дата сообщения: 14.02.2008 14:22

Цитата:
ну и в идеале поищите nvidia мануалы для использования их графических процессоров, коих много и производительность много выше.

т.е. заставить видеокарту считать мою задачу????
Автор: greenpc
Дата сообщения: 14.02.2008 14:35
kotel
IMHO o0
сказал чушь. Лучше постарайся оптимизировать свой алгоритм
Я пробовал RC5 и RC6 скорость работы около 8 мб/сек - это шифрование
расчет MD5 2 - 2,5 млн опер/сек

Цитата:

Цитата:ну и в идеале поищите nvidia мануалы для использования их графических процессоров, коих много и производительность много выше.

т.е. заставить видеокарту считать мою задачу????
А мужики то не знают (с) Золотая Бочка
Автор: RostY
Дата сообщения: 15.02.2008 13:08
Есть cxGrid и в нем Level с DBTableView.
по DblClick'у на гриде надо сделать некоторые операции, для которых нужно знать FieldName поля на котором кликнули.
У DBTableview есть события OnDblClick и OnCellDblClick. Я так подозреваю что это то что мне надо, но как получить FieldName колонки на которой кликнули не знаю.
Автор: Erazer
Дата сообщения: 16.02.2008 02:23
Получаю через drag&drop каталоги и файлы, если первое делаем одно если второе -другое, как выяснить с минимальными затратами что передо мной ?
Решил через FileExists/DirectoryExists, мож есть пути короче ?
Автор: nuker2015
Дата сообщения: 17.02.2008 17:28
RostY

Цитата:
по DblClick'у на гриде надо сделать некоторые операции, для которых нужно знать FieldName поля на котором кликнули.
У DBTableview есть события OnDblClick и OnCellDblClick. Я так подозреваю что это то что мне надо, но как получить FieldName колонки на которой кликнули не знаю.

Чтото типа этого: в onDoubleClick(может и здесь есть Column)
Grid.Column.FieldName


Добавлено:
Rudia

Цитата:
1,2,3,4 и программа и библиотека компилится под одной версией делфей
5 Знаю, что извращение, но писал не я. Написано было для "универсальности", да и в некоторых случаях передается выборка из БД в пару тысяч записей - тут без sharemem никак.

Теперь вместо шаремем используют FastMM
Автор: Minissota
Дата сообщения: 17.02.2008 21:57
Привет, всем!
Народ, Вы не подскажите как сделать поиск по базе данных? А то, что то у меня не хочет оно искать! Выдает, ошибку, типа запрос не верный. Вот как я делал:

...............

Код: procedure TForm7.SpeedButton3Click(Sender: TObject);
var
fam: string[30];
begin
fam:=InputBox('Выборка информации из БД',
'Укажите фамилию и щелкните на OK.', '');
if fam <> ''
then
begin
with Form7.IBQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT * from PRIEM_OTDEL'); \\ (PRIEM_OTDEL это имя таблицы)
SQL.Add('WHERE');
SQL.Add('(fio_bol = "'+ fam + '")');
SQL.Add('ORDER BY fio_bol');
Open;
end;
if IBQuery1.RecordCount <> 0 then
DataSource1.DataSet:=IBQuery1
else begin
ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');
form7.DataSource1.DataSet:=DataModule2.IBDataSet6;
end;
end;
end;
Автор: xy
Дата сообщения: 17.02.2008 22:23
Расскажите плиз доступно-поплуярно чем отличается
Halt от Application.Terminate
или как вообще карректно прихлопнуть приложение (само убивает себя) в некоторых критических ситуациях :-?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.