Вопрос № 64072: УВАЖАЕМЫЕ, ЭКСПЕРТЫ подскажите как в Edit'е переместить курсор из положения перед первым символом в место за последним?...Вопрос № 64108: Здравствуйте, уважаемые эксперты! Подскажите, пожалуйста, как программно добавить задание в планировщик задач Windows XP? Заранее благодарен!...Вопрос № 64113: Здравствуйте, господа Эксперты! Помогите, пожалуйста, решить такую проблему: надо из
типизированного файла прочитать по порядку все записи (я пользуюсь TFIleStream) и записать их в текстовый файл - для просмотра, например, в Блокноте. Я понимаю, что ...Вопрос № 64138: Здравствуйте уважаемые эксперты!Я только недавно занялся делфи.а мне поставили задачу написать программку для распаковке кодограмм,смысл её заключается в следующем из битового файла считывается блок в 28 байт идёт его обработка(заполнение некой с
трук...Вопрос № 64151: Здраствуйте уважаемые эксперты. Возник такой вопрос, программа должна генерить порядковые числа и писать в файл. Сделал, все работает отлично, но пишет в файл 1,2,3,4...и т.д. Как сделать чтобы она писала с нулями, то есть: 007,008,009,010,011... ...Вопрос № 64178: Здравствуйте уважаемые эксперты... У меня вот какой вопрос:
Как рисовать в Delphi.. просто по форме, но не используя свойство canvas.
А то канва очень медленно работает. Может кто подскажет более быстрый способ рисования (только пожалуйсто ес...
Вопрос № 64.072
УВАЖАЕМЫЕ, ЭКСПЕРТЫ подскажите как в Edit'е переместить курсор из положения перед первым символом в место за последним?
Отправлен: 24.11.2006, 23:01
Вопрос задал: MIXAIL (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Синельников Сергей
Здравствуйте, MIXAIL!
Edit1.SetFocus;
Edit1.SelStart:=Edit1.SelLength;
Ответ отправил: Синельников Сергей (статус: 1-ый класс)
Ответ отправлен: 25.11.2006, 12:40 Оценка за ответ: 4 Комментарий оценки: По вашему у меня не получилось. Сделал как посоветовал Mexes
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Андрющенко Вячеслав Васильевич!
Планировщик работает на уровне системы и она никому просто так не дает его использовать. К тому же, система обычно этим сама занимается...
Наверное, вы имели ввиду программу Task Scheduler, которая делает что-дь по расписанию. Мне кажется, что наиболее "прозранчным" методом будет использование консоли, которую этот самый планировщик поддерживает.
Вначале читаете, как его использовать:
Пуск->выполнить->cmd->help at
либо
[Win]+[R]->cmd->at /?
Там все очень просто.
А далее в своей программе делаете вызов: ShellExecute
Здравствуйте, господа Эксперты! Помогите, пожалуйста, решить такую проблему: надо из типизированного файла прочитать по порядку все записи (я пользуюсь TFIleStream) и записать их в текстовый файл - для просмотра, например, в Блокноте. Я понимаю, что это надо делать циклом, надо еще ПрогрессБар прикрутить, но как: я не знаю, сколько в типизированном файле будет записей. Как наиболее быстро их посчитать - возможно, не читая их одну за другой? Предложите, пожалуйста, возможный алгоритм такой перезаписи из файла
в файл. Заранее спасибо!
Отправлен: 25.11.2006, 09:19
Вопрос задал: Neiroman (статус: 1-ый класс)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: monah
Здравствуйте, Neiroman!
var
fl:tMyType; // тип записи в файле.
fs:Tfilestream;
i, e:integer;
begin
.....
ProgresBar1.max:=fs.size;
e:=fs.size div SizeOf(Tfilestream); // количество записей.
for i:=0 to e-1 do
begin
fs.read(fl, sizeof(fl));
/// записываем в текстовый файл данные
ProgressBar1.Progres:=fs.Position;
end;
progressBar1.Progres:=0;
fs.free;
end;
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 25.11.2006, 10:36
Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 25.11.2006, 15:16
Отвечает: Писарев, Павел, Юрьевич
Здравствуйте, Neiroman!
В приложение превожу пример работы с типизированным файлом.
Приложение:
Ответ отправил: Писарев, Павел, Юрьевич (статус: 1-ый класс)
Ответ отправлен: 25.11.2006, 17:23
Отвечает: PaVeL_Ekt
Здравствуйте, Neiroman!
Можно еще использовать структуру
var
Buf:array [1..1024] of byte;
rd: integer;
F:TFileStream;
...
REPEAT
rd:=F.ReadBuf(buf,sizeof(buf);
UNTIL rd<1;
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 27.11.2006, 06:39
Вопрос № 64.138
Здравствуйте уважаемые эксперты!Я только недавно занялся делфи.а мне поставили задачу написать программку для распаковке кодограмм,смысл её заключается в следующем из битового файла считывается блок в 28 байт идёт его обработка(заполнение некой структуры) затем переход на следующий блок в 28 байт ит .д.Блоки по 28 байт разделений не имеют т.е следуют друг за другом.Подскажите как мне наилучшим образом организовать считывание блока для обработки и переход от блока к блоку пока не будет достигнут конец файла .Заранее
спасибо.
Отправлен: 25.11.2006, 13:02
Вопрос задал: Delphi-n (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 25.11.2006, 13:55
Отвечает: PaVeL_Ekt
Здравствуйте, Delphi-n!
Для считывания определенного кол-ва байт нужно делать примерно так
var
F:TFileStream(TMemoryStream);
Buf: array [1..28] of byte;
rd: integer;
...
F.LoadFromFile(FName);
...
дальше можно через repeat until или while (что больше подходит)
While F.readbuf(buf, sizeof(buf))<>0 do
begin
... //обработка кода
end;
УДАЧИ
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 27.11.2006, 06:49
Вопрос № 64.151
Здраствуйте уважаемые эксперты. Возник такой вопрос, программа должна генерить порядковые числа и писать в файл. Сделал, все работает отлично, но пишет в файл 1,2,3,4...и т.д. Как сделать чтобы она писала с нулями, то есть: 007,008,009,010,011...
Заранее благодарен.
Отправлен: 25.11.2006, 14:20
Вопрос задал: Алескандр (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: monah
Здравствуйте, Алескандр!
var
s:string;
i:integer;
for i:=0 to 12 do
begin
s:=inttostr(i)
while length(s)<3 do s:='0'+s;
showmessage(s);
end;
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 25.11.2006, 14:25
Отвечает: Coupler
Здравствуйте, Алескандр!
Можно использовать FormatFloat. Пример в приложении.
Приложение:
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 25.11.2006, 15:03
Отвечает: DeVampir
Здравствуйте, Алескандр!
Попробуйте добавить к числу тысячу, потом перевести в строку, обрезать первый символ и только тогда вывести. Очень удобно, если неизвестно сколько нулей нужно впереди (т.е. можно возвести 10 в нужную степень, а потом добавить к выводимому числу)
Удачи!!!
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 3-ий класс)
Ответ отправлен: 25.11.2006, 16:48
Отвечает: Sattar
Здравствуйте, Алескандр!
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:string;
begin
for i:=1 to 100 do
begin
case i of
10..99:s:='0'+IntToStr(i);
1..9:s:='00'+IntToStr(i);
else s:=IntToStr(i);
end;
Memo1.Lines.Add(S);
end;
end;
Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 25.11.2006, 18:12
Вопрос № 64.178
Здравствуйте уважаемые эксперты... У меня вот какой вопрос:
Как рисовать в Delphi.. просто по форме, но не используя свойство canvas.
А то канва очень медленно работает. Может кто подскажет более быстрый способ рисования (только пожалуйсто если можно без ASM, а то не то чтоб я с ним дружу.. =)... )
Отправлен: 25.11.2006, 18:31
Вопрос задал: Spiteful (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 8)
Отвечает: sir henry
Здравствуйте, Spiteful!
Альтернативный способ - использовать функции рисования WinAPI. Для этого Вам нужно сначала получить контекст формы:
Var
DC:=HDC;
Begin
DC:=GetDC(Form1.Handle);
Rectangle(20, 20, 100, 100); //Прямоугольник
ReleaseDC(Form1.Handle, DC);
DeleteDC(DC);
End;
Только не забывайте после каждого акта рисования удалять контекст устройства чтобы освободить ресурсы системы.
Все функции рисования в WinAPI называются так-же, как и функции Canvas. Насколько это быстрее судить не берусь, но попробуйте, может Вас скорость удовлетворит.
Однако для быстрого и профессионального рисования обычно используют либо DirectX, либо OpenGL. Но объем кода при этом существенно больше.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 25.11.2006, 19:59 Оценка за ответ: 5 Комментарий оценки: Спасибо большое попробую разобраться с WinApi так как использовать DirectX и OpenGl нельзя по условию задачи =(