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

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

Автор: OOD
Дата сообщения: 24.01.2008 09:16
Всем добрый день помогите справиться с проблемой требуется постоянно переписывать файл который создается другим приложением , в сетевую папку, или же передавать его через UDP Socks на локальный компьютер ...
через батник делаю просто :

copy *.* \\netcomp\shara\*.* /y

с UDP и Socetaми разобраться толком не могу подскажите как это реализовать



Автор: delover
Дата сообщения: 24.01.2008 10:25
OOD
Во первых задача вообще не ясна, нужны подробности, а экстрасенсов нет. Во вторых, а нужен ли тебе геморой с сокетами? Сокет это обязательно передающая программа и получающая. Так вот там где тебе нужно писать файл должна всегда крутиться получающая программа. Стоит ли дополнительно нагружать систему, если всё и так работает?

Добавлено:
OOD
Ну и посмотри на досуге :\Program Files\Borland\Delphi6\Demos\Internet\Chat
Автор: RezchiK
Дата сообщения: 24.01.2008 21:13
У меня такая невезуха с фильтрацией БД-точнее она не выполняется((( создал вторичные ключи у полей 'FIOZakaz' и 'Material'...может что кто подскажет...оодин раз правдв она выполнилась, пока я не ввёл второй параметр фильтрации, потом и вовсе пересала фильтроватся((( ....

Цитата:

procedure TFBase.Button3Click(Sender: TObject);
begin
if edit1.Text='' then ShowMessage('Введите параметр фильтра') else
begin
DataModule1.TableGlavn1.IndexName:='IND';
DataModule1.TableGlavn1.SetRangeStart;
DataModule1.TableGlavn1.FieldByName('FIOZakaz').AsString:=Edit1.Text;
DataModule1.TableGlavn1.SetRangeEnd;
DataModule1.TableGlavn1.FieldByName('FIOZakaz').AsString:=Edit1.Text;
DataModule1.TableGlavn1.ApplyRange;
end; end;

procedure TFBase.Button2Click(Sender: TObject);
begin
DataModule1.TableGlavn1.CancelRange; Edit1.Clear;
end;

procedure TFBase.Button4Click(Sender: TObject);
begin
if edit2.Text='' then ShowMessage('Введите параметр фильтра') else
begin
DataModule1.TableGlavn1.IndexName:='IND';
DataModule1.TableGlavn1.SetRangeStart;
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;
DataModule1.TableGlavn1.SetRangeEnd;
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;
DataModule1.TableGlavn1.ApplyRange;
end; end;

procedure TFBase.Button5Click(Sender: TObject);
begin
DataModule1.TableGlavn1.CancelRange; Edit2.Clear;
end;

Автор: Maks150988
Дата сообщения: 24.01.2008 22:28
У меня идиотский вопрос (как всегда).
Возможно ли скомпилировать 64-битное приложение с помощью Делфи? Или вообще никак?
Автор: vladk1973
Дата сообщения: 25.01.2008 06:31
RezchiK

Цитата:
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;
DataModule1.TableGlavn1.SetRangeEnd;
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;

А что, Edit1 не задействован?
Автор: RomanTim
Дата сообщения: 25.01.2008 06:44
Maks150988
С помощью делфей никак. Можешь глянуть в строну FreePascal - там есть компилятор под x64.
А вообще, при том что ты принципиально не пользуешься VCL, мне не очень понятно почему делфи, а не Visual Studio и C++ - все то же самое плюс гораздо более полный хелп, плюс x64, плюс не надо на часть апишных функций самому писать external-описания, котрые борландовцы почему-то то ли забыли, то ли не захотели.
Автор: RezchiK
Дата сообщения: 25.01.2008 07:43
vladk1973
Edit1 задействован, просто надо было в таблице у вторичных индексов галочку у свойства уникальный убрать и всё заработало)))
Автор: Czechoslovak
Дата сообщения: 25.01.2008 08:48
Maks150988
Lazarus x64 вроде есть
Автор: sldaac
Дата сообщения: 25.01.2008 23:33
Доброго дня
Не поможете с Clever Internet Suite
надо срочно, поис ничего не дал, в нете только демо
Автор: RezchiK
Дата сообщения: 26.01.2008 16:59
Вот ещё такой вопросец, никак нее могу догнать как делать связи с таблицами в Database Desktop. У меня две таблицы:
Glavn:
ID + *
Nom I
FIOZakaz A 30
Adress A 30
DataZakaz D
............
Image G

Adress:
ID + *
FIOZakaz A 30
Adress A 30

Как мне создать связи в десктопе, чтоб занесённые данные родительской таблицы Adress в поле с адресом, отображались в дочерней таблице Glavn??? И можно тоже самое сделать с изображением??? Потом как я понимаю надо будет прировнять эти поля в SQL в Query??? Есть мануал по БД в Delphi 3, но там к сожелению нет соответствующих картинок из раздела связей(((
Автор: Maks150988
Дата сообщения: 27.01.2008 00:41
Здраствуйте. Как мне программно передвинуть строчку в ListView? Код такой:

SelRow := SendMessage(GetDlgItem(hWin, CTRL_LISTVIEW_PLAYLIST), LVM_GETNEXTITEM, -1 , LVIS_SELECTED);
if SelRow = -1 then Exit;
if(SelRow > -1) then SendMessage(GetDlgItem(hWin, CTRL_LISTVIEW_PLAYLIST), LVM_SETITEMPOSITION, SelRow + 1, 0);

Но элемент не перемещается вниз. Что делаю не так?
Автор: vidic777
Дата сообщения: 27.01.2008 02:55
Подскажите как решить такую проблему ?
Пытаюсь чужой проект, который мне необходимо продолжать дорабатывать, перетащить из BCB 5.0 в RAD Studio 2007 и при открытии файла *.bpr получаю сообщение об ошибке:
Error
---------------------------
Parameter "itemInclude" cannot be null.
---------------------------
OK Details <<
---------------------------
Скриншот:


Полный текст сообщения

[more]Error
---------------------------
Parameter "itemInclude" cannot be null.
---------------------------
OK Details <<
---------------------------
[21E584AB]{dotnetcoreide100.bpl} InteropApp.TMSBuildOpenProject.BeginWrite (Line 1266, "InteropApp.pas" + 1) + $25
[2000A455]{rtl100.bpl } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[21E584AB]{dotnetcoreide100.bpl} InteropApp.TMSBuildOpenProject.BeginWrite (Line 1266, "InteropApp.pas" + 1) + $25
[220A0C0B]{bcbide100.bpl} BdsToMSBConverter.TBdsProjToMSBConverter.CreateFileListFromMainSource (Line 758, "BdsToMSBConverter.pas" + 14) + $28
[220A0032]{bcbide100.bpl} BdsToMSBConverter.TBdsProjToMSBConverter.ConvertFileList (Line 617, "BdsToMSBConverter.pas" + 9) + $3
[2209E142]{bcbide100.bpl} BdsToMSBConverter.TBdsProjToMSBConverter.Convert (Line 218, "BdsToMSBConverter.pas" + 4) + $3
[220A1C68]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.ConvertBDSProjToMSBuildProj (Line 129, "CppProjectImport.pas" + 11) + $3
[220A1E7D]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.ConvertOldCBuilderProject (Line 171, "CppProjectImport.pas" + 21) + $5
[220A19EC]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.Convert (Line 100, "CppProjectImport.pas" + 8) + $9
[220A4D95]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.Create (Line 687, "CppProjectImport.pas" + 5) + $28
[220A1FD9]{bcbide100.bpl} CppProjectImport.TCppLegacyProjectFileHandler.FileOpen (Line 204, "CppProjectImport.pas" + 13) + $3
[20A5D95C]{coreide100.bpl} DocModul.TFilterList.OpenFile (Line 786, "DocModul.pas" + 35) + $14
[20A62942]{coreide100.bpl} DocModul.ProjectOpenDialog (Line 3146, "DocModul.pas" + 30) + $1E
[00415D67]{bds.exe } AppMain.TAppBuilder.ProjectOpen (Line 2616, "ui\AppMain.pas" + 3) + $0
[2004018B]{rtl100.bpl } Classes.TBasicAction.Execute (Line 11081, "common\Classes.pas" + 3) + $7
[20151359]{vcl100.bpl } ActnList.TContainedAction.Execute (Line 388, "ActnList.pas" + 1) + $2C
[201520BC]{vcl100.bpl } ActnList.TCustomAction.Execute (Line 1000, "ActnList.pas" + 7) + $8
[20040057]{rtl100.bpl } Classes.TBasicActionLink.Execute (Line 11010, "common\Classes.pas" + 2) + $7
[2013CA15]{vcl100.bpl } Controls.TControl.Click (Line 5227, "Controls.pas" + 7) + $7
[2019BCF0]{vcl100.bpl } ComCtrls.TToolButton.Click (Line 17003, "ComCtrls.pas" + 0) + $0
[2013CEA7]{vcl100.bpl } Controls.TControl.WMLButtonUp (Line 5365, "Controls.pas" + 6) + $3E
[2013C527]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2013C1B4]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[2013FEC6]{vcl100.bpl } Controls.GetControlAtPos (Line 7095, "Controls.pas" + 4) + $73
[2013FF8E]{vcl100.bpl } Controls.TWinControl.ControlAtPos (Line 7118, "Controls.pas" + 13) + $E
[2013C1B4]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[20140199]{vcl100.bpl } Controls.TWinControl.IsControlMouseMsg (Line 7182, "Controls.pas" + 15) + $1F
[20140561]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7269, "Controls.pas" + 76) + $6
[2019DD33]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonState (Line 18148, "ComCtrls.pas" + 5) + $1C
[2019DD76]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonStates (Line 18158, "ComCtrls.pas" + 3) + $4
[201A06A9]{vcl100.bpl } ComCtrls.TToolBar.WndProc (Line 19588, "ComCtrls.pas" + 80) + $6
[1032C789]{cxLibraryC11.bpl} cxContainer._16891 + $95
[2013FDD0]{vcl100.bpl } Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas" + 3) + $6
[20040E4C]{rtl100.bpl } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
[2004A49E]{rtl100.bpl } Contnrs.TComponentList.GetItems (Line 380, "common\Contnrs.pas" + 1) + $4
[201625F0]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8105, "Forms.pas" + 23) + $1
[2016262A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, "Forms.pas" + 1) + $4
[2016291F]{vcl100.bpl } Forms.TApplication.Run (Line 8223, "Forms.pas" + 20) + $3
[0042297A]{bds.exe } bds.bds (Line 195, "" + 7) + $7[/more]


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

Заранее благодарен.
Автор: Maks150988
Дата сообщения: 27.01.2008 20:04
И еще хотел спросить: щелкаю в ЛистВью по пункту и жму на другое окошко. Выделение элемента в списке пропадает. Может стиль надо какой применить к элементу? А то например с Диспетчером задач такого не происходит - там выделенрие элемента в списке сохраняется, если курсором пощелкать по другим контролам.
И еще: мне необходимо сразу инициализировать 2 диалога через DialogBox, однако грузится только один. Как это можно сделать? Просто мне необходимо это для дополнительного окошка, которое использую вкачестве окна статуса.
Автор: xy
Дата сообщения: 27.01.2008 20:36
Народ, есть такая проблемка, думаю многим знакомая
Есть большое приложение, работает с БД разных типов и расположений
есть там фнукция типа подключения информации из одной БД в другую (хотя это и не так важно
заметил, что после завершения работы этой функции, прога что-то забывает в памяти, т.е. растет, потом уменьшается, но килобайт на 100 больше становится (запускал раз 20 и проверял по диспетчеру задач

прога в исходниках

подскажите плиз как малой кровью выследить чего она забывает в памяти (может коннект какой или переменные какие) :-?
Автор: vassal76
Дата сообщения: 28.01.2008 04:41
Здравствуйте подскажите пож. как стринговую переменную в которой сидит HEX код например #$17 изменить на #$21, т.е. ко всем значениям которые появятся в этой переменной прибавить 4 (сдвинуть на 4).
Автор: RomanTim
Дата сообщения: 28.01.2008 06:57
xy
Попробуй AQTime - у него есть функция мониторинга создаваемых/освобождаемых объектов, памяти и т.п.

vassal76
StrToInt, IntToHex
Автор: vassal76
Дата сообщения: 28.01.2008 08:22
Не канает пишет 'is not a valid integer value'
StrToInt я уже пробовал.
Автор: greenpc
Дата сообщения: 28.01.2008 08:40
vassal76

Цитата:
стринговую переменную

тогда по всей длине

Код:
for i:=1 to length(s1) do
if ord(s1[i])=$17 then s1[i] := chr($21) // или s1[i] := chr(ord(s1[i])+4);

а если значение одно то удобнее тип char;
Автор: vserd
Дата сообщения: 28.01.2008 09:40
vassal76

Цитата:
Не канает пишет 'is not a valid integer value'
StrToInt я уже пробовал

А волшебную кнопочку F1 нажимал?
А вдуууумчиво, не спеша, читал ?
Видно нет. Иначе бы вопросов не задавал.
замени # на $ и будет тебе счастье, после замени на обратное.
Автор: Mandor Sawall
Дата сообщения: 28.01.2008 10:00
Maks150988
По моему, сообщение неправильное. LVM_SETITEMPOSITION работает только для icon view и small icon view, а параметры - X и Y координата.

Что бы не теряли selection, Style должен включать TVS_SHOWSELALWAYS.

Добавлено:
vassal76
Пожалуйста, поясните: какой у вас стринг:
sNumbers := #$17#$43...;
или
sNumbers := '#$17#$43...';
Автор: Maks150988
Дата сообщения: 28.01.2008 15:45
Mandor Sawall
Да вот как оказалось правильно стиль TVS_SHOWSELALWAYS начинает работать, когда в самом ресурсе для контрола прописываю его, а не когда применяю через LVM_SETEXTENDEDLISTVIEWSTYLE. Очень странно... Такая мелочь, а сколько времени потратил на ее решение...
А LVM_SETITEMPOSITION не работает когда у меня просто LVM_LIST. Получается вообще никак? Эх...
И еще вопрос, который мучает. Помогите разобраться с инициализацией сразу двух диалогов. Дело обстоит примерно так: мне надо одновременно загрузить 2 диалога из ресурсов функцией DialogBox. Но по умолчанию грузится только один из них. Как можно в обход? Подумывал через таймер после иницализации первого грузить второй, однако это не выход. Итак таймеров многовато у меня в приложении. Вот не знаю как сделать.
Автор: mauar
Дата сообщения: 28.01.2008 16:59
Есть база данных (программа ) ADO с обращениями к базе Access, В базе Access есть таблица с логином и паролем для доступа и открытия программы через компонент TGuery, в таблице Access , как реализовать чтобы вводился пароль на изминения Access базы и на простой просмотр в DbGrid без возможности изминения данных?
Автор: Erazer
Дата сообщения: 28.01.2008 18:23
подскажите плз как быть в таких случаях :
procedure GetFileVersion(FileName: String);
begin
InfoSize := GetFileVersionInfoSize(PChar(FileName), Tmp);
end;
если я хочу реализовать поддержку unicode, то должно быть похоже так:
procedure GetFileVersion(FileName: WideString);
а как тогда быть с PChar(FileName) ?

Добавлено:
есть пара функций {:Converts Unicode string to Ansi string using specified code page.
@param ws Unicode string.
@param codePage Code page to be used in conversion.
@returns Converted ansi string.
} и {:Converts Ansi string to Unicode string using specified code page.
@param s Ansi string.
@param codePage Code page to be used in conversion.
@returns Converted wide string.
} вопрос: как понять какую именно кодовую страницу использовать ? (Code page to be used in conversion )


Автор: jONES1979
Дата сообщения: 28.01.2008 21:27
mauar, ты путанно как то объяснил... Но может тебе пригодится такое знание: в компоненте Tdbgird есть свойство Readonly. Устанавливаешь его в true и грид переходит в режим просто просмотра. И у TQuery тоже есть такое свойство...
Автор: RomanTim
Дата сообщения: 28.01.2008 21:32
Erazer

Цитата:
если я хочу реализовать поддержку unicode

GetFileVersionInfoSizeW


Цитата:
как понять какую именно кодовую страницу использовать ?

Тут тебе виднее - ты должен знать на каком языке тебе пользователь пишет. Есть еще в системе возможность настраивать какой язык по умолчанию используется для неюникодовых программ (в региональных настройках). Получить можно так:
Код: const
LOCALE_RETURN_NUMBER = $20000000;
var
n: Integer;
begin
GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_IDEFAULTANSICODEPAGE or LOCALE_RETURN_NUMBER, @n, SizeOf(n));
end;
Автор: vassal76
Дата сообщения: 29.01.2008 03:59
Mandor Sawall

стринг (без кавычек)
sNumbers := #$10

length говорит что длинна равна 1
Автор: relictus
Дата сообщения: 29.01.2008 08:05
Можно ли и как получить размер свободного места на сетевом диске? Сетевом ресурсе?
Автор: Mandor Sawall
Дата сообщения: 29.01.2008 08:55
vassal76
Ну, если без кавычек, то greenpc уже ответил (лучше вариант после //).
Кстати, смещение #$17 на 4 дает #$1B а не #$21...

Maks150988
Прямо - никак. Нужно "ручками" заменить два Item-а.
Автор: greenpc
Дата сообщения: 29.01.2008 09:43
relictus
var
free_size, total_size: Int64;

begin
GetDiskFreeSpaceEx(PChar('\\test\c$'), Free_size, Total_size, nil);
ShowMessage(IntToStr(Free_size));
Автор: mauar
Дата сообщения: 29.01.2008 10:37

Цитата:
mauar, ты путанно как то объяснил... Но может тебе пригодится такое знание: в компоненте Tdbgird есть свойство Readonly. Устанавливаешь его в true и грид переходит в режим просто просмотра. И у TQuery тоже есть такое свойство...


Так вот мне и нужно сделать так чтобы это свойство было включенно при вводе пароля с запретом на редактирование .
т.е. я ввожу пароль база открывается все работает, я хочу сделать чтобы можно было при вводе пароля для пользователя был запрет на редактирование данных. при вводе пароля администратора редактировать можно, при вводе пароля пользователя свойство
ReadOnly было в true у компонента TQuery или у сеточки.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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