Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-06-07

Re: Delphi: Console Input + SetLength

Здравствуйте !

> Почему данный код вылетает с Violation-ом после ввода по такому
> принципу: следующий введенный набор символов короче чем предыдущий?

> Readln(TmpBuf);
> vSize := Length(TmpBuf);
> SetLength(Buf, vSize); <ошибка вылетает вот здесь
> lstrcpy(@Buf, @TmpBuf);

Может, я глубоко заблуждаюсь, но, имхо:
TmpBuf - паскалевская строка (то есть длина хранится в 1-м байте) ?
lstrcpy копирует null-terminated строки (с завершающим нулем), то есть
при копировании из области памяти, указанной @TmpBuf, может производить
чтение за допустимыми границами (тут может и ошибка защиты вылезти).
Т.к. lstrcpy еще и пишет в Buf, длина которого установлена, кстати,
равной длине строки TmpBuf, то тут также может возникнуть ошибка
защиты (уже на запись).
Не знаю что делает SetLength (как работает, точнее), но судя по всему,
т.к. ее назначение - изменить размер выделенного блока памяти (подобно
realloc (сишной), то, надо полагать, при выделении блока памяти, для
блока выделяется размер больше указанного и вначале (например),
блока хранится служебная инфа (о азмере блока, и.т.д.).
Ее (служебную инфу) можно легко перетереть 9возможно этои случается).
Тогда при следующих манипуляциях с этим блоком (попытке удалить,
изменить размер) и будет валиться.

Что можно посоветовать.
Если уж нужно скопировать из паскалевской в null-terminated строку, то
воспользоваться, например, memcpy (т.к. длина строки известна) и еще
выделить Buf на 1 побольше и проставить в конец Buf 0.

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4574
Возраст листа : 625 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380458
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-07 22:19:56 (#380458)

Re: Фленов М. Е. Программирование в Delphi глазами хакера.

Бурляев Вячеслав пишет:

>> Может быть кто-то встречал книжки этих авторов в электроном
>> варианте?
>>
>>
>
>Маленько оффтопика, но по идее вся эта тема такая.
>Очtym часто читаю сообщения, где найти электронный вариант какой-нибудь
>книжки. А почему бумажные варианты не устраивают? Мне волт лично нравится
>нормальные книжки читать, а не пялиться в экран монитора.
>
>
>
БЕСПЛАТНО???

Номер выпуска : 4573
Возраст листа : 625 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380384
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-07 21:02:16 (#380384)

Разработка типа компилятора

добрий день всем.
вопрос мой такой- нужно создать программу, которая создает программу.
т.е. программа должна создавать ехе-шку , которая потом выполняется.
подскажите если кто знает..примеры ссылки для начала.
в общем нужно направление мысли задать!

спасибо
Олег

mailto:ol***@c*****.ua

Номер выпуска : 4572
Возраст листа : 625 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380382
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   ol 2005-06-07 21:01:48 (#380382)

Re: Low-Level DB

Hello, Александр!

On Tue, 7 Jun 2005 16:18:39 +0500 you wrote:

> Хочется в программе сделать поддержку прав, прога вообще без формы
> (даже на чистом API). Я так подумал что проще всего хранить юзеров,
> пароли и права в базе, чем создавать велосипеды с record-ами, тем
> более что удалять из файла с record-ами геморройно. Впрочем я отвлекся
> :)
>
> Я хочу реализовать в своей программе работу с базами без всяких
> компонентов, на низком уровне. Но т.к. в базах я ПОЛНЫЙ профан, я
> остановился в самом начале - создание базы, выбор из нее записи о
> юзере и вытаскивания из нее его прав, редактирование базы.
> При всех этих проблемах я еще одну себе добавил - желательно чтобы
> база работала на MSSQL Server, насколько я понял он есть во всех
> виндовозах от win98 (если тупость написал - сильно не пинать, лучше
> подскажите базу которая есть во всех виндовозах без всяких MS Office)

Хе, MSSQL Server - 190 тыс. руб. за однопроцессорную лицензию.
Нету в винде sql-сервера по умолчанию.
А тягать с собой MySQL (или что еше хуже Posgres) - это конечно
благородное занятие, но для таких задач бессмысленное.

   "B." 2005-06-07 20:12:50 (#380353)

Re[6]: Фленов М. Е. Программирование в Delphi глазами хакера.

Хаю ду ю ду Бурляев Вячеслав?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

БВ> Маленько оффтопика, но по идее вся эта тема такая.
БВ> Очtym часто читаю сообщения, где найти электронный вариант какой-нибудь
БВ> книжки. А почему бумажные варианты не устраивают? Мне волт лично нравится
БВ> нормальные книжки читать, а не пялиться в экран монитора.

Да хотя бы по той же причине почему в России весь софт "бесплатный"

   2005-06-07 16:09:24 (#380197)

Low-Level DB

Аллоха, All!
А я вот щас как сморожу очередную глупость:

Хочется в программе сделать поддержку прав, прога вообще без формы
(даже на чистом API). Я так подумал что проще всего хранить юзеров,
пароли и права в базе, чем создавать велосипеды с record-ами, тем
более что удалять из файла с record-ами геморройно. Впрочем я отвлекся :)

Я хочу реализовать в своей программе работу с базами без всяких
компонентов, на низком уровне. Но т.к. в базах я ПОЛНЫЙ профан, я
остановился в самом начале - создание базы, выбор из нее записи о
юзере и вытаскивания из нее его прав, редактирование базы.
При всех этих проблемах я еще одну себе добавил - желательно чтобы
база работала на MSSQL Server, насколько я понял он есть во всех
виндовозах от win98 (если тупость написал - сильно не пинать, лучше
подскажите базу которая есть во всех виндовозах без всяких MS Office)
В общем пока насочинял/натырил вот такой код (ниже). Он производит
открытие базы + чего-то там выбирает из нее.
Вот вопросы по этому коду:
1) Что писать в MyConn.ConnectionString для MSSQL (ну или что вы
посоветуете)?
2) Как получить записи которые после MyRecSet.Open(...); лежат
(насколько я понял) где-то в MyRecSet? Изыскания с
MyRecSet.GetString(...); ни к чему не привели т.к. документации по
этой функции я не нашел, а телепатическими способностями я не
обладаю.
3) Как в таком же духе создавать таблицы, изменять добавлять?

PS: База будет состоять из полей (ну как минимум на первых порах):
UserName UserPassword - обычные стринги + поле UserRights -
многострочная запись

program Project1;
{$APPTYPE CONSOLE}
uses
Windows,
adoint,
ActiveX;

var
MyConn: _Connection;
MyCommand: _Command;
MyRecSet: _Recordset;
OptionalParam: OleVariant;
VarData: PVarData;
begin
OptionalParam := DISP_E_PARAMNOTFOUND;
VarData := @OptionalParam;
VarData^.VType := varError;
CoInitialize(nil);

MyConn := CoConnection.Create;
MyConn.ConnectionString := 'Provider=MSDataShape.1;Data Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb';
MyConn.Open(MyConn.ConnectionString, '', '', - 1);
MyCommand := CoCommand.Create;
MyCommand.Set_ActiveConnection(MyConn);
MyCommand.CommandText := 'SHAPE {select * from customer} ' +
'APPEND ({select * from orders} AS Orders ' +
'RELATE CustNo TO CustNo) ';
MyRecSet := CoRecordSet.Create;

MyRecSet.Open(MyCommand, OptionalParam, adOpenDynamic, adLockReadOnly, adCmdText);
Writeln(MyRecSet.RecordCount);
Writeln(MyRecSet.Get_Source);
//Writeln(string(MyRecSet.GetString(0, 5, ';', ':', 'ALL')));
readln;
CoUnInitialize;
end.

   2005-06-07 15:25:52 (#380146)

Delphi: Console Input + SetLength

Аллоха, All!
А я вот щас как сморожу очередную глупость:

Почему данный код вылетает с Violation-ом после ввода по такому
принципу: следующий введенный набор символов короче чем предыдущий?
Например после ввода такой последовательности:
rrrrrr<enter>
rrr<enter>
rr<enter>
Код выдран из более весомой программы, так что про смысл данных
манипуляций не спрашивайте:

program WinSock_Client;
{$APPTYPE CONSOLE}
uses
Windows;

const cSigExit = 'q';
var TmpBuf: string;
buf: array of byte;
vSize: integer;
begin
repeat
Buf := nil;
Readln(TmpBuf);
vSize := Length(TmpBuf);
SetLength(Buf, vSize); <ошибка вылетает вот здесь
lstrcpy(@Buf, @TmpBuf);
until chr(buf[0]) = cSigExit;
end.

   2005-06-07 15:25:17 (#380145)

Re[5]: Фленов М. Е. Программирование в Delphi глазами хакера.

> Может быть кто-то встречал книжки этих авторов в электроном
> варианте?

Маленько оффтопика, но по идее вся эта тема такая.
Очtym часто читаю сообщения, где найти электронный вариант какой-нибудь
книжки. А почему бумажные варианты не устраивают? Мне волт лично нравится
нормальные книжки читать, а не пялиться в экран монитора.

С уважением, Бурляев Вячеслав

Номер выпуска : 4567
Возраст листа : 625 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380125
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-07 14:55:37 (#380125)

Re[4]: Фленов М. Е. Программирование в Delphi глазами хакера.

>, Eugene the Monster

Может быть кто-то встречал книжки этих авторов в электроном
варианте?

EtM> Понравился Фаронов, Архангельский.

   2005-06-07 13:50:12 (#380047)

Re[4]: SQL запрос в delphi

Здравствуйте, Бурляев.

Вы писали 7 июня 2005 г., 10:27:47:

> SELECT [Сотрудники].[Примечания]
> FROM Сотрудники
> WHERE ((([Сотрудники].[Примечания]) Like "*кончил*"));

> Извиняюсь, конечно, что Текст письма невнимательно прочитал. И первоначально
> запросы делал не в Access.
:-)

Но...
SELECT *
FROM Автопарк
WHERE ([Остановки] LIKE "*' + Edit1.Text + '*");

Ни чего не выводит... Хотя точно знаю что есть варианты. Мне говорили
что вроде как надо делать LIKE IS или что то такое...

   2005-06-07 10:02:16 (#379954)

Re[3]: SQL запрос в delphi

> > select field_memo from table where field_memo like "%string%"
> > выбирает поля memo со строкой string.
>
> > C уважением, Бурляев Вячеслав
>
>
> Вот тото и оно
> Вот мой запрос
> S:String
>
> s:='SELECT *';
> s:=s+' FROM ''Автопарк'' ';
> s:=s+'WHERE Остановки LIKE ''%'+ComboBox1.Text+'%''';
>
> Выдает ошибку " Не полное построение запроса".

В Access похоже идёт отступление от стандарта SQL :-)
Вместо % надо писать звёздочку.
Загрузил акссессовскую базу Борей, и выполнил вот такой запрос:

SELECT [Сотрудники].[Примечания]
FROM Сотрудники
WHERE ((([Сотрудники].[Примечания]) Like "*кончил*"));

Всё прекрасно работает. Когда писал в условии LIKE символ %. Выборка ничего
не создавала.

Извиняюсь, конечно, что Текст письма невнимательно прочитал. И первоначально
запросы делал не в Access.

С уважением, Бурляев Вячеслав

Номер выпуска : 4564
Возраст листа : 625 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/379928
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-06-07 08:37:05 (#379928)