Вопрос № 80690: Добрый день!
Работаю с файлами данных большого размера (от 5М до 1Г). Для чтения файла использую FileMapping.
При размере файла <700М все читается нормально, а при размере >700M
выскакивает ошибка 8<Недостаточно памяти для в...Вопрос № 80718: Как можно работать над одним проектом одновременно с нескольких компьютеров в локальной сети !?
Заранее спасибо !...Вопрос № 80760: Здравствуйте!
Посоветуйте, пожалуйста, компонент или просто набор функций, которые узнают всю системную информацию о компе. Тип CPU, памяти, видео, настройки операционки и так далее...
Заранее спасибо!...Вопрос № 80767: Здравствуйте. Помогите написать генератор пароля по такому принципу. На форме есть следующие компоненты: CheckBox1 (генерировать цифры), CheckBox2 (генерировать кирилические маленькие буквы), CheckBox3 (генерировать латинские маленькие буквы), Edit1 ...Вопрос № 80773: Здравствуйте, уважаемые эксперты!
1. Подскажите несколько способов сделать так, чтобы приложение могло удалить само себя (ведь во время работы к нему нет доступа, с помощью BATника что ли?)
2. Если кто-нибудь работал с AlphaSkins, то как сдел...Вопрос № 80819: Здравствуйте уважаемые эксперты.
Не подскажите ответ на следующие вопросы.
1. Как определить какие принтеры стоят в сети (наименование и IP), и если они привязаны к какому то ПК то выдать к какому ПК (его IP) они привязаны.
2. Определить...Вопрос № 80849: подскажите как можно считать параметры CMOS...
Вопрос № 80.690
Добрый день!
Работаю с файлами данных большого размера (от 5М до 1Г). Для чтения файла использую FileMapping.
При размере файла <700М все читается нормально, а при размере >700M
выскакивает ошибка 8<Недостаточно памяти для выполнении команды>
При этом FMap = nil
FMap := MapViewOfFile ( FileMapping, FILE_MAP_READ, 0, 0, 0 );// здесь ошибка на больших файлах > 700M
Если не трудно, подскажите где собака зарыта?
Отвечает: Уваров Андрей Александрович
Здравствуйте, Сазонов Михаил Владимирович!
Выдержка из MSDN:
Paging file space for the entire view is committed when copy-on-write access is specified, because the thread in the process can write to every single page. Therefore, enough physical storage space must be obtained at the time MapViewOfFile is called.
Это значит что на диске должно быть достаточно места для файла. Я так понял файла подкачки? Я просто не работал с этой функции но чувствую что у вас мал файл подкачки....
--------- Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Отвечает: PGM
Здравствуйте, Сазонов Михаил Владимирович!
Последний параметр MapViewOfFile - если он равен 0, то пытается загрузить весь файл в память. Правильнее было бы работать "кусками" и маппить только ту область, с которой работаешь (3 и 4 параметры - смещение), а потом освобождать и переходить к другому участку.
Ответ отправил: PGM (статус: 3-ий класс)
Ответ отправлен: 03.04.2007, 10:31
Вопрос № 80.718
Как можно работать над одним проектом одновременно с нескольких компьютеров в локальной сети !?
Заранее спасибо !
Отправлен: 02.04.2007, 15:03
Вопрос задал: Sniffer (статус: Студент)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Базанов Иван Александрович
Здравствуйте, Sniffer!
В Delphi для этого нужно поставить StarTeam Server
--------- Disassemble your life and get the key
Отвечает: Архангельский Андрей Германович
Здравствуйте, Sniffer!
Есть приложение StarTeam (входит в Delphi 2006 или можно приобрести отдельно),
но не все проекты могут быть поддержаны (указано в документации)
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 02.04.2007, 15:08 Оценка за ответ: 5 Комментарий оценки: Спасибо, но я работаю под Delphi 7 можно ли ее использовать ?
Отвечает: Pavel Maltsev
Здравствуйте, Sniffer!
Используйте системы для управления исходными кодами (типа Source Safe, CVS, StarTeam). Мы у себя в конторе используем SVN. Она хранит версии исходников, разграничивает права доступа различных программистов к разным исходникам, и т.д. и т.п... - а главное позволяет сливать исходники, если например два программера правили один и тот же файл (система сама анализирует какие процедуры/функции были изменены).
Ну а по-простецки - можно расшарить директорию (открыть общий доступ), ну и каждый может смапировать (Tools -> Map networkd disk в "Мой компьютер")... И в перед, но тогда будут проблемы, если программисты будут править один и тот же файл...
Удачи!
Ответ отправил: Pavel Maltsev (статус: 3-ий класс)
Ответ отправлен: 02.04.2007, 15:13
Вопрос № 80.760
Здравствуйте!
Посоветуйте, пожалуйста, компонент или просто набор функций, которые узнают всю системную информацию о компе. Тип CPU, памяти, видео, настройки операционки и так далее...
Заранее спасибо!
Отправлен: 02.04.2007, 19:10
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Red Spirit!
Смотрите ответы на вопрос №80197
--------- Не узнаешь - не попробуешь.
А также прилагаю проект с подобными возможностями.
Good Luck!!!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 02.04.2007, 19:53 Оценка за ответ: 5 Комментарий оценки: Спасибо, хорошие примеры!
Отвечает: василий1
Здравствуйте, Red Spirit!
видео адаптер
procedure TForm1.button1click(Sender: TObject);
var
lpDisplayDevice: TDisplayDevice;
dwFlags: DWORD;
cc: DWORD;
begin
form2.memo1.Clear;
lpDisplayDevice.cb := sizeof(lpDisplayDevice);
dwFlags := 0;
cc := 0;
while EnumDisplayDevices(nil, cc, lpDisplayDevice, dwFlags) do
begin
Inc(cc);
form2.memo1.lines.add(lpDisplayDevice.DeviceString);
{Так же мы увидим дополнительную информацию в lpDisplayDevice}
form2.show;
end;
end;
ниже код программы которая определяет определенные параметры из нужных вам
// Информация о компьютере.
procedure TfmMain.HardwareInfo;
var Size : cardinal;
PRes : PChar;
BRes : boolean;
lpSystemInfo : TSystemInfo;
begin
// Имя компьютера
Size := MAX_COMPUTERNAME_LENGTH + 1;
PRes := StrAlloc(Size);
BRes := GetComputerName(PRes, Size);
if BRes then laCompName_.Caption := StrPas(PRes);
// Имя пользователя
Size := MAX_COMPUTERNAME_LENGTH + 1;
PRes := StrAlloc(Size);
BRes := GetUserName(PRes, Size);
if BRes then laUserName_.Caption := StrPas(PRes);
// Процессор
GetSystemInfo(lpSystemInfo);
laCPU_.Caption := 'класса x' + IntToStr
(lpSystemInfo.dwProcessorType);
end;
Приложение:
Ответ отправил: василий1 (статус: 2-ой класс)
Ответ отправлен: 03.04.2007, 03:23 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Вопрос № 80.767
Здравствуйте. Помогите написать генератор пароля по такому принципу. На форме есть следующие компоненты: CheckBox1 (генерировать цифры), CheckBox2 (генерировать кирилические маленькие буквы), CheckBox3 (генерировать латинские маленькие буквы), Edit1 (для установки длинны пароля) и приделанный к нему UpDown1 (для увеличения или уменьшения длинны пароля). При нажатии на клавишу Button1, программа проверяет, какие CheckBox выбранны и генерирует из них в перемешку и получившийся пароль выводит в поле MaskEdit1.
Помогите пожалуйста
Отправлен: 02.04.2007, 20:14
Вопрос задал: SashaFAN (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Gh0stik
Здравствуйте, SashaFAN!
Я вместо CheckBox-ов воспользовался обычным CheckListBox-ом, на мой взгляд более компактно и рационально. В него я разместил такие строки в таком порядке: Цифры
Кириллица маленькие
Латиница маленькие
Так же как Вы и говорили разместил Edit1 (для установки длинны пароля) и приделанный к нему UpDown1, а вот результат - пароль - вывожу тоже в обычный Edit2, заменить его на MaskEdit1 не составит большого труда.
Содержание процедуры которая происходит по нажатию кнопки смотрите в приложении, если возникнут вопросы - задавайте. При создании пароля я использовал псевдослучайный генератор чисел и с его помощью вычислял очередной символ пароля, конечно же если выполняются соответствующие установки в CheckListBox.
Good Luck!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 02.04.2007, 21:18
Отвечает: W@NDeReR
Здравствуйте, SashaFAN!
В приложении написан весь код программы
Приложение:
Ответ отправил: W@NDeReR (статус: 2-ой класс)
Ответ отправлен: 03.04.2007, 10:49
Вопрос № 80.773
Здравствуйте, уважаемые эксперты!
1. Подскажите несколько способов сделать так, чтобы приложение могло удалить само себя (ведь во время работы к нему нет доступа, с помощью BATника что ли?)
2. Если кто-нибудь работал с AlphaSkins, то как сделать, чтобы бы в sOpenDialog были видны скрытые и системные файлы и папки? В обычном OpenDialog' е они отображаются по умолчанию. Хотя я полностью сделал такие же свойства в Object Inspector у sOpendialog как и у Opendialog, но результата не дало...
Отправлен: 02.04.2007, 21:03
Вопрос задал: Win2k (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: василий1
Здравствуйте, Win2k!
с помощью батника
uses
Windows, SysUtils;
procedure DeleteMe;
var
BatchFile: TextFile;
BatchFileName: string;
ProcessInfo: TProcessInformation;
StartUpInfo: TStartupInfo;
begin
{ создаём бат-файл в директории приложения }
BatchFileName := ExtractFilePath(ParamStr(0)) + '$$336699.bat';
{ открываем и записываем в файл }
AssignFile(BatchFile, BatchFileName);
Rewrite(BatchFile);
// с помощью ассемблера
procedure DeleteSelf;
var
module: HModule;
buf: array [0..MAX_PATH - 1] of char;
p: ULong;
hKrnl32: HModule;
pExitProcess,
pDeleteFile,
pFreeLibrary: pointer;
begin
module := GetModuleHandle(nil);
GetModuleFileName(module, buf, SizeOf(buf));
CloseHandle(THandle(4));
p := ULONG(module) + 1;
hKrnl32 := GetModuleHandle('kernel32');
pExitProcess := GetProcAddress(hKrnl32, 'ExitProcess');
pDeleteFile := GetProcAddress(hKrnl32, 'DeleteFileA');
pFreeLibrary := GetProcAddress(hKrnl32, 'FreeLibrary');
asm
lea eax, buf
push 0
push 0
push eax
push pExitProcess
push p
push pDeleteFile
push pFreeLibrary
ret
end;
end;
Ответ отправил: василий1 (статус: 2-ой класс)
Ответ отправлен: 03.04.2007, 03:33 Оценка за ответ: 4 Комментарий оценки: Все хорошо, но только не хочет работать алгоритм с ассемблером, который меня очень заинтересовал. Как только сами в нем разберетесь и убедитесь в его работоспособности, напишите, пожалуйста, мне в личку.
Отвечает: PGM
Здравствуйте, Win2k!
1. Да классики рекомендуют именно с помощью BAТника. Я делал вот так
procedure SelfDelete;
var CleanupBatchFileName : String;
BatchLines : TStringList;
ws : array[0..MAX_PATH] of Char;
begin
// Need delete all files in this directory
CleanupBatchFileName := MakeTempFileName(False);
CleanupBatchFileName := ChangeFileExt(CleanupBatchFileName,'.bat');
BatchLines := TStringList.Create;
try
ANSIToOem(PChar(ParamStr(0)), ws);
BatchLines.Add(Format('ERASE "%s"', [ws]));
BatchLines.Add(Format('ERASE %s', [CleanupBatchFileName]));
BatchLines.SaveToFile(CleanupBatchFileName);
WinExec(PChar(CleanupBatchFileName),SW_HIDE);
finally
BatchLines.Free;
end;
end;
Ответ отправил: PGM (статус: 3-ий класс)
Ответ отправлен: 03.04.2007, 10:40 Оценка за ответ: 5 Комментарий оценки: Круто! Даже работает. Правда MakeTempFileName(False); неизвестный идентификатор (видно не подключен какой-то Unit), но все же спасибо!
Вопрос № 80.819
Здравствуйте уважаемые эксперты.
Не подскажите ответ на следующие вопросы.
1. Как определить какие принтеры стоят в сети (наименование и IP), и если они привязаны к какому то ПК то выдать к какому ПК (его IP) они привязаны.
2. Определить какие внешние устройства (модем, факс, CD/DVD Rom, внешние диски, колонки и т.д. стоят у ПК
Буду особенно благодарен за исходные тексты
Отправлен: 03.04.2007, 06:59
Вопрос задал: Zlm1 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Zlm1!
С каких это пор CD/DVD-ROM стал внешним устройством?
Их как и любые дисковые накопители, и внешние, и внутренние; но только тем, которым назначенна буква, можно определить с помощью функций:
GetLogicalDrives;
GetDriveType(Pchar); Вот пример использования этих функций.
Определить наличие колонок можно, только если это поддерживает звуковая карта. И все это делают по-разному. И все равно нечетко потому, что ничего, кроме сопротивления подключенного к аудиовыходу устройства, померить звуковая карта не может.
Как определять мышь и клавиатуру, не знаю. Но они обычно есть всегда. А полагаться на нестандартные возможности (Media-кнопки и прочее подобное) не стоит.
--------- Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 03.04.2007, 13:13 Оценка за ответ: 5 Комментарий оценки: Спасибо за оперативность
Вопрос № 80.849
подскажите как можно считать параметры CMOS
Отправлен: 03.04.2007, 11:22
Вопрос задал: Jek (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PGM
Здравствуйте, Jek!
Это низкоуровневая информация - поэтому придется найти/написать драйвер, который считает CMOS и передаст приложению данные. Приложение может подгрузить этот драйвер динамически (через Service Control Manager) и запросить через DevciceIOControl нужную информацию. Аналогично можно изменять CMOS.
P.S. У меня по такой схеме работает программирование таймера включения компьютера (правда приходится затачиваться под конкретную материнку - смещения у всех разные)
Ответ отправил: PGM (статус: 3-ий класс)
Ответ отправлен: 03.04.2007, 18:21