Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.03.2013, 16:06
grib_aga grib_aga вне форума
Прохожий
 
Регистрация: 19.12.2012
Сообщения: 14
Репутация: 10
По умолчанию Не получается сравнить значение var Buffer и строки?

Написал вот так, не работает:

Код:
var   n, b: string;
        FileFrom, FileTo: TFileStream;


        FileFrom := TFileStream.Create('filefrom.txt', fmOpenRead);
        FileTo := TFileStream.Create('outfile.txt', fmCreate);
        FileFrom.ReadBuffer(n, 1);
        b := 'мое значение';
        if n = b then Exit;

Получаю ошибку Access violation и Runtime Error.
Как исправить?
Ответить с цитированием
  #2  
Старый 17.03.2013, 17:34
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
Setlength(n, сколько нужно);
FileFrom.ReadBuffer(@n[1], сколько нужно);
При условии, что строка из символов char.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 18.03.2013, 13:24
grib_aga grib_aga вне форума
Прохожий
 
Регистрация: 19.12.2012
Сообщения: 14
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Код:
Setlength(n, сколько нужно);
FileFrom.ReadBuffer(@n[1], сколько нужно);
При условии, что строка из символов char.

Не работает, 'Constant object cannot be passed as var parameter'.
Если не сложно и будет свободное время, прошу помочь сделать рабочий вариант.
Delphi 7.

Последний раз редактировалось grib_aga, 18.03.2013 в 13:29.
Ответить с цитированием
  #4  
Старый 18.03.2013, 13:58
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
var
  f: TFileStream;
  b: String;
  v: String;
begin
  v:='unit Unit1;';
  f:=TFileStream.Create('Unit1.pas', fmOpenRead);
  try
    SetLength(b, 11);
    f.ReadBuffer(PChar(b)^, 11);
    if v=b then ShowMessage('Ok');
  finally
    f.Free;
  end;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
grib_aga (18.03.2013)
  #5  
Старый 18.03.2013, 15:10
grib_aga grib_aga вне форума
Прохожий
 
Регистрация: 19.12.2012
Сообщения: 14
Репутация: 10
По умолчанию

NumLock, подскажи как прочитать первый байт файла и сравнить его с эталоном, например,

a := первый байт в файле;
b := 01001101;
if a = b then ShowMessage('Ok');
Ответить с цитированием
  #6  
Старый 18.03.2013, 15:19
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
var
  f: TFileStream;
  v: Byte;
  b: Byte;
begin
  v:=$75;
  f:=TFileStream.Create('Unit1.pas', fmOpenRead);
  try
    f.ReadBuffer(b, 1);
    if v=b then ShowMessage('Ok');
  finally
    f.Free;
  end;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
grib_aga (18.03.2013)
  #7  
Старый 18.03.2013, 15:32
grib_aga grib_aga вне форума
Прохожий
 
Регистрация: 19.12.2012
Сообщения: 14
Репутация: 10
По умолчанию

NumLock, спасибо(большое!), думаю последний вовпрос, как разложить байт на биты? Например, в целочисленный массив.
Ответить с цитированием
  #8  
Старый 18.03.2013, 15:48
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

проверкой младшего бита с помощью and 1 и циклическим сдвигом вправо shr 1.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 18.03.2013, 16:26
grib_aga grib_aga вне форума
Прохожий
 
Регистрация: 19.12.2012
Сообщения: 14
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
проверкой младшего бита с помощью and 1 и циклическим сдвигом вправо shr 1.

Спасибо! Проблема решена.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter