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

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

Автор: viman82
Дата сообщения: 03.06.2011 18:05
Подскажите алгоритм, пожалуйста, не могу продумать

Есть 3 переменные, условно А В С. в определенном месте им присваиваются значения, могут быть одинаковыми или разными (рандом). Требуется провести их сравнение и вывести их буквенный эквивалент, по старшинству, от большего к меньшему. Например если А<В<С то вывести 'СВА', если А=В<С то вывести 'САВ', т.е. первый символ в этой тройке Больший потом Средний потом Меньший.
Автор: akaGM
Дата сообщения: 03.06.2011 18:46
viman82
type
TVARREC = record
value: integer; // real
name: string; // ну или char
end;
var
A, B, C: TVARREC;

величины value сравниваются по обычным законам сравнения целых/вещественных чисел
Автор: viman82
Дата сообщения: 03.06.2011 19:52
akaGM
В одном сложность, я начинающий, и что это я не знаю, но попробую разобраться.
И значения АВС уже обьявлены типом integer
Автор: GRom V
Дата сообщения: 04.06.2011 10:03
Вопросик - создаем ярлык:

procedure CreateLink(const PathObj, PathLink, WorkDir, Desc, Param: string);
var
IObject: IUnknown;
SLink: IShellLink;
PFile: IPersistFile;
begin
IObject := CreateComObject(CLSID_ShellLink);
SLink := IObject as IShellLink;
PFile := IObject as IPersistFile;
with SLink do
begin
SetPath(PChar(PathObj)); //Сам файл
SetWorkingDirectory(PChar(WorkDir)); //Рабочая папка
SetDescription(PChar(Desc)); //Коментарий
SetArguments(PChar(Param)); //Параметры запуска
SetWorkingDirectory(PChar(WorkDir)); //Рабочая папка
end;
PFile.Save(PWChar(WideString(PathLink)), FALSE);
end;

Вызываем:
CreateLink('%windir%\system32\cmd.exe', C:\1.lnk, '%currentdir%', 'коментарий', 'параметр');

В свойствах ярлыка есть еще вкладка окно (поумолчанию стоит Обычный размер окна)...
Нигде не нашел как сделать чтоб эта вкладка была на (свернутое в значек).
Т.Е. как то

procedure CreateLink(const PathObj, PathLink, WorkDir, Window, Desc, Param: string);

setWindow...

И второе: Как задать иконку ярлыку???

Подскажите кто знает!...
Автор: smirnvlad
Дата сообщения: 04.06.2011 10:55
SetShowCmd(SW_SHOWMINNOACTIVE)
Автор: GRom V
Дата сообщения: 04.06.2011 11:15
smirnvlad
Во я втупил...
Спасибо!!!
Автор: akaGM
Дата сообщения: 04.06.2011 12:59
viman82
Код: type
TVARREC = record
value: integer;
name: char;
end;
var
Arec, Brec, Crec: TVARREC;
A, B, C: integer;

begin
Arec.value := A;
Brec.value := B;
Crec.value := C;
Автор: viman82
Дата сообщения: 04.06.2011 20:12
akaGM
Дак вот иемнно механизм сравнения и вывода букв в нужной последовательности и не могу реализовать...
Автор: akaGM
Дата сообщения: 04.06.2011 20:36
viman82

Цитата:
Дак вот иемнно механизм сравнения и вывода букв не могу реализовать

всего лишь...
"я не могу решить поставленную мне задачу..."

сравнение двух числел a, b:

if (a >= b) then
а больше или равно b
else
b больше a


чего здесь непонятного?

сравнение трёх числел a, b, с:

if (a >= b) then
а больше или равно b
х = а
else
b больше a
х = b

if (х >= с) then
х самое большое (или равное любому из трёх)
тут уже нужны дальнейшие проверки
else
с самое большое из трёх чисел
Автор: GRom V
Дата сообщения: 05.06.2011 06:39
Почему не работает эта штука, а именно при нажатии на кнопку - выбираем файл, который тут же записывается в ini, т.е при следующем выборе файла - путь должен считываться из этого ini... Но если в ини меняю путь, то открывается старый, следовательно путь не считывается! Почему??? Где ошибочка? :

procedure TForm1.Button1Click(Sender: TObject);
begin
Vars:=TiniFile.Create(extractfilepath(paramstr(0))+'setting.ini');
openDialog := TOpenDialog.Create(self);
openDialog.InitialDir := Vars.ReadString('Key','Dir','key.key'); //Вот путь
openDialog.Options := [ofFileMustExist];
if openDialog.Execute
then begin
Vars.WriteString('Key','Dir',OpenDialog.Filename); //Записываем в иньку
end else
Vars.Free;
end;

ИНИ получается такого типа
[Key]
Dir=D:\1.key
Автор: ShIvADeSt
Дата сообщения: 05.06.2011 08:07
GRom V

Цитата:
openDialog.InitialDir := Vars.ReadString('Key','Dir','key.key'); //Вот путь

Не путайте путь к файлу (кусок ДО ИМЕНИ файла) с полным путем файла (именно его вы считываете из инишки). В вашем случае нужно либо FileName вместо InitialDir либо делать ExtractFilePath для считанного из ини значения делать
Автор: GRom V
Дата сообщения: 05.06.2011 08:37
ShIvADeSt
блин...Ну конечно!
Автор: viman82
Дата сообщения: 05.06.2011 20:57
akaGM
так то до этого и сам допер, решил задачу, думал что можно проще без тупого сравнения if a>b then else
Автор: akaGM
Дата сообщения: 05.06.2011 23:54
viman82
а как ты в жизни выбираешь из двух значений бОльшее без тупого сравнения?
Автор: ShIvADeSt
Дата сообщения: 06.06.2011 03:22
Чтобы уменьшить число сравнений, пишется функция, которая возвращает все что надо.
Автор: akaGM
Дата сообщения: 06.06.2011 14:16
ShIvADeSt
а кстати, не знаешь есть ли в новых дельфях что-нибудь кроме max() и maxValue() с переменным числом аргументов?
Автор: ShIvADeSt
Дата сообщения: 06.06.2011 14:49
akaGM
Я все еще сижу на Дельфи 5 Мне хватает, а если что надо - сам дописываю, поэтому не знаю
Автор: akaGM
Дата сообщения: 06.06.2011 15:11
ShIvADeSt
с трудом верится, но наверное так и есть, у меня самого -- Д7
всё от задачи зависит: консольный тулз или примитивная форма -- действительно хватает...
тем более если Д не основная среда проекта (как в моём случае)
Автор: GRom V
Дата сообщения: 06.06.2011 15:52
Вопрос к гуру.. уже все перелопатил, не срастается.
Задача такая:
Создаю ярлык и к нему иконку:

procedure CreateLink(const PathObj, PathLink, WorkDir, Desc, IconFile, ShowCmd, Param: string);

SetIconLocation( PChar( IconFile ), 0 );

CreateLink('%windir%\system32\cmd.exe', ExtractFilePath(Application.ExeName)+ Edit3.text, '%currentdir%', '', ExtractFilePath(Application.ExeName)+ 'main.ico', 'SW_SHOWMINNOACTIVE', ('/c '+ '"'+Edit4.text+'"'));

Интересует это: ExtractFilePath(Application.ExeName)+ 'main.ico'
В свойствах ярлыка прописывается все равно полный путь, по этому при переносе на другую иашину иконка есесьНо пропадает, т.к путь может быть любой.
Это скорее вопрос по винде, но мало ли..вообщем сам вопрос:
Знает ктонить как в ярлыке прописать путь, чтоб иконку поднимал из текущей папки???

Добавлено:
Походу ярлыки понимают ток абсолютные пути...
Автор: ShIvADeSt
Дата сообщения: 07.06.2011 04:17
akaGM

Цитата:
с трудом верится, но наверное так и есть, у меня самого -- Д7
всё от задачи зависит: консольный тулз или примитивная форма -- действительно хватает...
тем более если Д не основная среда проекта (как в моём случае)

У меня на данный момент программирование - не основная работа. Поэтому Дельфи 5 хватает за глаза. А вот если бы наоборот, то наверное сидел бы на последних версиях, так как там много вкусностей.
Автор: akaGM
Дата сообщения: 07.06.2011 05:40
ShIvADeSt

Цитата:
У меня на данный момент программирование - не основная работа

у меня, кстати, тоже...
просто до версии 6.0 (или 7.0?) со сборкой сторонних компонент большие траблы были,
афаир с DesignIntf
-LUdesignide выправлено



типа осознал... :)
Автор: Frodo_Torbins
Дата сообщения: 07.06.2011 20:36
akaGM
Функции с переменным числом аргументов можно писать самому, если нужно.
Автор: akaGM
Дата сообщения: 08.06.2011 10:05
Frodo_Torbins
я в курсе, спасибо...
Автор: brookson
Дата сообщения: 08.06.2011 17:22
Доброго всем времени суток,

Помогите решить проблему, которая уже так достала....
Есть D2006, использую стандартные компоненты для доступа к Firebird.

Глюк такой. Иногда приходится менять например Ibquery.sql.text (в дизайнере).
Работает всё себе нормально пару жней или недель.
И вдруг в один день оказывается, что это свойство (Ibquery.sql.text) в рантайме имеет не новое значение, а старое, которое было например месяц назад и которое я поменял. В конструкторе как когда. Иногда смотрю - старое вылезло. А чаще - в конструкторе новое, а в рантайме (дебагом смотрю) - старое.

Что с этим делать? Проект довольно большой, так вот взять, остановить всю работу и переползти на другие компоненты почти нереально.

Добавлено:
Помогает лишь присвоение непосредственно во время выполнения нового значения.
Автор: Aladdinych
Дата сообщения: 09.06.2011 23:15
Подскажите плз, существуют ли компоненты подобные Imagelist которые бы поддерживали форматы gif, png, jpg

Добавлено:
Подскажите плз, существуют ли компоненты подобные Imagelist которые бы поддерживали форматы gif, png, jpg
Автор: akaGM
Дата сообщения: 09.06.2011 23:25
Aladdinych
начни искать отюда:
http://torry.net/pages.php?s=72

например, сразу же в исходниках:
Цитата:
ATViewer v.2.8.4
Image: all general graphics formats: BMP JPG GIF PNG TGA TIFF... plus all formats supported by IrfanView/XnView external viewers. File is shown using ATImageBox component.
Автор: Aladdinych
Дата сообщения: 10.06.2011 07:34
Нужен невизуальный компонент, который был бы контейнером для изображений этих форматов

Добавлено:
не для отображения, а для использования другими компонентами
Автор: momo2000
Дата сообщения: 12.06.2011 10:41
procedure TForm15.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
clPalewhite = TColor($000000);
clPaleblack = TColor($000000);
begin

If Column.FieldName = 'pn' then //Удалите эту линию, если хотете закрасить целую линию

If Column.Field.Dataset.FieldbyName('pn').AsString = 'a'
then
If (gdFocused in State) //имеет ли ячейка фокус?
then dbgrid1.canvas.brush.color := clBlack //имеет фокус
else dbgrid1.canvas.brush.color := clBlack; //не имеет фокуса

//Теперь давайте закрасим ячейку используя стандартный метод:
dbgrid1.DefaultDrawColumnCell(rect,DataCol,Column,State)

end;


как добавить, чтобы сюда были включены колонки vt, sr, 4t?


Автор: Frodo_Torbins
Дата сообщения: 12.06.2011 11:10
momo2000
Похоже нужно добавить их в первый if.
Автор: momo2000
Дата сообщения: 12.06.2011 11:15
Frodo_Torbins

Цитата:
охоже нужно добавить их в первый if.

да, но как я не пытался и через запятую и в скобках и and и or и нифига.


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

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


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