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

» Вопросы по Delphi

Автор: LordMAD
Дата сообщения: 27.01.2006 11:56
Vitus_Bering
Что за строки в списках? От этого зависит способ подбора hash-функции.
Автор: ShamaN
Дата сообщения: 27.01.2006 12:02
LordMAD да вроде бы нет
А с чего ты взял?
Автор: LordMAD
Дата сообщения: 27.01.2006 12:08
ShamaN

Цитата:
LordMAD да вроде бы нет
А с чего ты взял?

Только что этот самый вопрос был закрыт в другом форуме (http://www.sql.ru/forum/actualthread.aspx?tid=256254) - я предположил, что это спрашивал ты, хотя ник автора вопроса там другой.
Автор: RostY
Дата сообщения: 27.01.2006 12:18
Shaman

ошибка, потому что ты в битмап грузиш жрег.
попробуй не
Image1.Picture.BitMap.LoadFromStream(BlobStream);
а
Image1.Picture.Graphic.LoadFromStream(BlobStream);
или
Image1.Picture.LoadFromStream(BlobStream);
____ еще кусочек из какой-то рассылки __________
begin
Jpeg :=TJPEGImage.Create;
try
if not ORATable1.FieldByName('pic').isNull then begin
BLStream :=TBLOBStream(ORATable1.CreateBlobStream(ORATable1.FieldByName('pic'), bmRead));
try
BLStream.Position :=0;
try
Jpeg.LoadFromStream(BLStream);
Image1.Picture.Assign(JPEG);
Image1.Picture.SaveToFile('a.jpg');
ImageEn1.LoadFromFileJpeg('a.jpg');
ImageEn1.IOParams.JPEG_ColorSpace:=ioJPEG_GRAYLEV;
ImageEn1.IOParams.JPEG_Quality:=50;
ImageEn1.IOParams.JPEG_Progressive:=True;
ImageEn1.SaveToFileJpeg('a.jpg');
except
end;
finally
BLStream.Free;
end;
end; //if not isNull
finally
Jpeg.Free;
end;
Автор: SERGE_BLIZNUK
Дата сообщения: 27.01.2006 13:30
RostY

Цитата:
Мне нужно именно ROWID, а не просто какую-то уникальную запись. Тот ROWID, который вижу в SQL-Plus, или при конекте к Ораклу через BDE.


Тебе чуть выше предложили
select rowid, fieldname from tab1

что возращает этот запрос?

P.S. Если ты поля ранее вытащил в DataSet - удали их все оттуда!
Автор: Vitus_Bering
Дата сообщения: 27.01.2006 13:38
LordMAD

Цитата:
Vitus_Bering
Что за строки в списках? От этого зависит способ подбора hash-функции.


Строки типа: 'C:\Directory\Doc\file1.txt'.
Короче, полные пути до файла.

Автор: relictus
Дата сообщения: 27.01.2006 13:39
А вот чего посоветуете использовать для написания multi-user приложения: DBISAM или FireBird? И то, и другое придется осваивать с нуля, но что предпочтительнее?
Автор: LordMAD
Дата сообщения: 27.01.2006 13:55
Vitus_Bering

Цитата:
Строки типа: 'C:\Directory\Doc\file1.txt'.
Короче, полные пути до файла.

Тогда попробуй использовать в качестве hash'а, например, отсаток от деления суммы все байтов строки на 256, т.е. что-то вроде этого:

Код:
function CalcHash(const S: string): Integer;
var
P: PChar;
begin
Result := 0;
P := PChar(S);
if Assigned(P) then
while P^ <> #0 do
begin
Result := (Result + Ord(P^)) and $FF;
P := CharNext(P);
end;
end;
Автор: Vitus_Bering
Дата сообщения: 27.01.2006 14:09
LordMAD
Спасибо.
Автор: gpi
Дата сообщения: 27.01.2006 15:01
relictus

Цитата:
А вот чего посоветуете использовать для написания multi-user приложения: DBISAM или FireBird? И то, и другое придется осваивать с нуля, но что предпочтительнее?

Я советую выбрать FB, тем более, что DBISAM - это компоненты для доступа к базе данных, представляющей собой набор таблиц и индексов, расположенных в одной директории и имеющих расширения *.dat и *.idx соответсвенно. Для администрирования FB - IBExpert. Компоненты для доступа - FIBPlus
Автор: RostY
Дата сообщения: 27.01.2006 15:13
SERGE_BLIZNUK

Цитата:
select rowid, fieldname from tab1

что возращает этот запрос?

P.S. Если ты поля ранее вытащил в DataSet - удали их все оттуда!


1. select возвращает только fieldname.

2. поля в Датасет не вытаскивал.

p.s. когда-то пользовался АДО для доступа к Ораклу - тогда была похожая трабла - ROWID был виден только если его явно вытащить в поля TADOQuery
Автор: nvlnik
Дата сообщения: 27.01.2006 15:59
Уважаемые господа!
Подскажите как сохранить в текстовый файл информацию в OEM кодировке.
Запись идет из memo, текст в котором создается программой и правиться пользователем.
Соответственно и в memo, и в файле должна быть кодировка OEM.
Автор: relictus
Дата сообщения: 27.01.2006 16:01
gpi:

но, насколько я понял, DBISAM позволяет писать multi-user приложения без необходимости поднятия сервера, верно?
Автор: RostY
Дата сообщения: 27.01.2006 16:12
nvlnik

Цитата:
Подскажите как сохранить в текстовый файл информацию в OEM кодировке.


используй
The CharToOem function translates a string into the OEM-defined character set. (OEM stands for original equipment manufacturer.) This function supersedes the AnsiToOem function...
Автор: nvlnik
Дата сообщения: 27.01.2006 16:38
Уважаемый Rosty!
The CharToOem поможет сохранить в файл, как я понимаю через обработку в буфере.
А нет ли более простого варианта?
Автор: gpi
Дата сообщения: 27.01.2006 17:02
relictus

Цитата:
но, насколько я понял, DBISAM позволяет писать multi-user приложения без необходимости поднятия сервера, верно?

Да. Но клиент-серверные приложения всё-таки лучше писать под полноценный SQL-сервер (с поддержкой триггеров, встроенными процедурами, механизмом транзакций и т.п.) Установка сервера Firebird займёт не более пяти минут (10-15 Мб на диске), клиент устанавливается ещё быстрее и занимает на диске менее 1Мб (можно уменьшить до 500кб). А DBISAM - более продвинутый вариант BDE, по моему мнению.
Зайди на http://www.ibase.ru - почитай о Firebird
Автор: ShamaN
Дата сообщения: 27.01.2006 18:11
LordMAD, спасибо, очень помог на том форуме действительно был хороший ответ.
Автор: Arjuna
Дата сообщения: 27.01.2006 18:51
Подскажите VCL для красивого оформления своей программы.

Кто тестировал всякие VCL с поддержкой скинов?

Если можно, ссылочку хотябы дайте нанаиболее понравивщийся VCL... Желательно на полную бесплатную версию ))
Автор: nvlnik
Дата сообщения: 27.01.2006 20:02

Рекомендую AlphaControls Home page: http://www.alphaskins.com
Для Российских пользователей бесплатно.
Автор: Infomobile
Дата сообщения: 29.01.2006 00:09
Вопрос для тех кто работал с CoolTrayIcon, там есть событие называеться OnStartup, так вот никак не пойму как с ним работать, вообщем ситуация такая на другой форме frmSettings есть чекбокс StartMinimized настройка сохраниения в реестре, так вот ника не могу сделать так чтобы при загрцзке программы и загрузки настроек из реестра связать чекбокс StartMinimized и событие OnStartup. Может ли кто-нибудь помочь?
Автор: ladapilot
Дата сообщения: 29.01.2006 12:46
Как вывести в поле edit язык , использующийся в данный момент (английский/русский)?
Автор: psixxx777
Дата сообщения: 29.01.2006 13:20
ladapilot

function WhichLanguage:string;
var
ID: LangID;
Language: array [0..100] of char;
begin
ID := GetSystemDefaultLangID;
VerLanguageName(ID, Language, 100);
Result := string(Language);
end;

...
...

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := WhichLanguage;
end;

Автор: smus811
Дата сообщения: 29.01.2006 16:53
Здравствуйте. Допустим я динамически, через массив, создал компоненты, например Label'ы, теперь мне нужно, чтоб по клику на определённый Label исполнялась процедура с определённым параметром. Подскажите, как это сделать? Вот мой код, там где вопрос, куда я вставлял название процедуры(только не бейте меня) - выдавало incompatyble types. Спасибо.
<B>var</B>
Lbl : array of TLabel;
I:integer;
<B>for </B>I := Low(Lbl) to High(Lbl)
<B>do begin</B>
Lbl[I] := TLabel.Create(self);
Lbl[I].Parent := ScrollBox1;
...
Lbl[I].OnClick := ?
<B>end;</B>
Автор: EZH
Дата сообщения: 29.01.2006 17:09
smus811
Создай одну процедуру с заголовком, как у обычного события OnClick (с Sender) - её и навешивай всем компонентам. А внутри процедуры определяй что это за компонент например по имени, которое извлекай у параметра Sender. Его же можно будет привести и к типу TLabel.
Автор: Sleepwalker
Дата сообщения: 29.01.2006 17:16
smus811
в обработчик события не может быть вставлена обычная процедура, только указатель на метод. Вообще, тебе же сообщение об ошибке все говорит.

в описании класса формы добавляешь
Procedure BCLick(sender:tobject);

а потом в коде
Lbl[I].OnClick :=BCLick;

ессно, не забудь реализовать процедуру BClick;

Добавлено:
EZH
опередил

smus811
при создании лэйблов даешь им имена, т.е.
Lbl[I].name = XXX
а потом в обработчике можно их извлечь:
TComponent(Sender).Name
Автор: smus811
Дата сообщения: 29.01.2006 17:32
Создал, только как в неё передать данные не пойму, допустим нужно передать какой-то Integer-массив D, что вписать в Sender. Или если что-то передавать в Sender(Как вы сказали имя) как это написать?


procedure TForm1.Show(Sender:TObject;Y:Integer);
begin
ShowMessage(IntToStr(Y));
end;

.....

Lbl[I].OnClick:=Form1.Show(???,D[I]);
Автор: EZH
Дата сообщения: 29.01.2006 18:10
smus811
Как параметр процедуры в событие передать тебе ничего не удасться по определению - они стандартны, и в Sender ничего не надо вписывать, указатель на кликнутый объект туда будет вписан автоматически.

По поводу передачи параметров - как вариант можно воспользоваться свойством Tag, которое есть у всех компонентов - оно типа Integer - так что ты можешь заранее туда прописывать либо число, либо указатель на любой объект или массив.
Автор: LordMAD
Дата сообщения: 30.01.2006 07:12
Sleepwalker

Цитата:
в обработчик события не может быть вставлена обычная процедура, только указатель на метод.

Вообще-то можно.

Цитата:
при создании лэйблов даешь им имена, т.е.
Lbl[I].name = XXX
а потом в обработчике можно их извлечь:
TComponent(Sender).Name

Смешно.
Автор: RostY
Дата сообщения: 30.01.2006 09:24
nvlnik

так подойдет?

function doschar(winchar: Char): Char;
begin
case Ord(winchar) of
192..239: Result := Chr(Ord(winchar) - 64);
240..255: Result := Chr(Ord(winchar) - 16);
168: Result := chr(240);
184: Result := chr(241);
170: Result := chr(242);
186: Result := chr(243);
178: Result := 'I';//chr
179: Result := 'i';//chr
175: Result := chr(244);
191: Result := chr(245);
183: Result := chr(250);
185: Result := chr(252);
164: Result := chr(253);
166: Result := chr(254);
else Result := winchar;
end;
end;

function dosstr(winstr: string): string;
var I: Integer;
begin
Result := '';
for I := 1 to Length(winstr) do
Result := Result + doschar(winstr[I]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var f:Textfile;
begin
Assignfile(f,'c:\test.txt');
Rewrite(f);
Write(f,DosStr(Memo1.Lines.Text));
CloseFile(f);
end;
Автор: ShIvADeSt
Дата сообщения: 30.01.2006 09:32
RostY
и ради чего такие извращения? вот есть тема по переводу в ОЕМ длЯ консоли
http://forum.ru-board.com/topic.cgi?forum=33&topic=5338#1

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


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