Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный хостинг на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 1943
∙ повысить рейтинг »
star9491
Статус: Практикант
Рейтинг: 1608
∙ повысить рейтинг »
Евгений/Genia007/
Статус: Бакалавр
Рейтинг: 801
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Delphi и Lazarus

Номер выпуска:1516
Дата выхода:09.04.2010, 04:00
Администратор рассылки:Владимир Лазурко, Профессионал
Подписчиков / экспертов:556 / 234
Вопросов / ответов:2 / 2

Вопрос № 177659: Добрый вечер Уважаемые эксперты. Пожалуйста, подскажите. Возможна ли работа на Delphi 7 с бинарными файлами. А именно с их шестнадцатеричными кодами? Например, возможно ли в определенном файле в ячейке по адресу 134749h прочесть значение д...


Вопрос № 177660: Добрый вечер! Имеется программа, лексический анализатор, он предусматривает ввод комментариев, но при их слитном написании с вводимым текстом выдает ошибку. URL >> Надеюсь на ваш совет, бу...

Вопрос № 177659:

Добрый вечер Уважаемые эксперты.
Пожалуйста, подскажите.
Возможна ли работа на Delphi 7 с бинарными файлами. А именно с их шестнадцатеричными кодами?
Например, возможно ли в определенном файле в ячейке по адресу 134749h прочесть значение двух шестнадцатеричных чисел и записать в него новое значение, например 0Ah.

Отправлен: 04.04.2010, 02:31
Вопрос задал: Dimon4ik, 5-й класс
Всего ответов: 1
Страница вопроса »


Отвечает Тимошенко Дмитрий, Студент :
Здравствуйте, Dimon4ik.

Примерно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var f: file of byte; // Объявляем файловую переменную
buf1,buf2: byte; // Временные значения
begin
assignFile(f,'c:\neon.avi'); // Связываем переменную с конкретным файлом
reset(f); // Открываем существующий файл
seek(f,$134749); // Переходм к заданной позиции
read(f,buf1); // в BUF1 считываем значение из текущей позиции
seek(f,$134749); // Переходм снова к заданной позиции т.к. указатель сместился
buf2:=$0A; // Задаем значение для записи
write(f,buf2); // записываем его в файл
closeFile(f); // Закрываем файл
end;

Ответ отправил: Тимошенко Дмитрий, Студент
Ответ отправлен: 04.04.2010, 05:16
Номер ответа: 260582

Оценка ответа: 5
Комментарий к оценке:
Все что нужно! Отлично!
Спасибо большое.

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260582 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 177660:

    Добрый вечер! Имеется программа, лексический анализатор, он предусматривает ввод комментариев, но при их слитном написании с вводимым текстом выдает ошибку. URL >> Надеюсь на ваш совет, буду очень признательна.

    Отправлен: 04.04.2010, 03:31
    Вопрос задал: sunny91, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Тимошенко Дмитрий, Студент :
    Здравствуйте, sunny91.
    Если быть точным, комментарии у вас вообще не распознаются, а не только при слитном написании.
    Надо внести след.изменения в ваш текст (выделены жирным):
    Код:
     while i <= length(line) do
    begin
    chr := line[i];
    inc(i);

    comment:=(chr='{') or (chr<>'}') and comment; {Исключение комментариев из анализа, вложенность не учитывается}

    if (chr = ' ') or (chr = #13) or (chr = #10) or comment then
    continue;

    if (not (chr in SymbOfFirstGr)) and (not (chr in SymbOfSecondGr)) and (not (chr in commentSymb)) then
    begin
    Dialogs.MessageDlg('Ошибка '+IntToStr(i-1)+' символ не верен ',mtError,[mbOk],0);
    exit;
    end;

    if chr in SymbOfFirstGr then
    begin
    start := i-1;
    while (chr <> ' ') and (chr <> #13) and (chr <> #10) and (chr<>'{') and ( i <= length(line)+1) do
    begin
    chr := line [i];
    inc(i);
    end;
    curword := copy(line, start, i-start-1);
    CheckFirstGrammar(curword);
    dec(i);
    continue;
    end;

    if chr in SymbOfSecondGr then
    begin
    start := i-1;
    while (chr <> ' ') and (chr <> #13) and (chr <> #10) and (chr<>'{') and ( i <= length(line)+1) do
    begin
    chr := line [i];
    inc(i);
    end;
    curword := copy(line, start, i-start-1);
    CheckSecondGrammar(curword);
    dec(i);
    continue;
    end;

    end;

    Так вроде работает как надо, хот я код можно было бы и подоптимизировать.

    Ответ отправил: Тимошенко Дмитрий, Студент
    Ответ отправлен: 04.04.2010, 06:41
    Номер ответа: 260583

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260583 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное