![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Способ прочитать с диска - правильно так?
privet123 © (2010-12-02 16:21:00)var ph:pchar; d,n:integer;
begin
getmem(ph,n); //n определяется в процессе
d:=fileopen('имя файла',fmopenread);
fileread(d,ph^,n);
fileclose(d);
ph[i]=доступ к каждому символу
Это работает, и без ошибок, но pchar же это строка, и конец её - нулевой символ. Тем не менее, даже бинарные файлы со многими нулями так считываются. Когда и кто её может, например, обрезать по первому встреченному нулю? то есть когда этот способ не сработает?
privet123 (2010-12-02 18:12:00) [21]уважаемые, если не пишете ответ, то зачем участвовать?
может кто то прочитает вопрос и ответит? вместо переговоров с вашими знакомыми, которые что то своё вписывают и оффтопят?
попробую ещё уточнить - я привёл способ считывания из файла. аналогично и запись в файл. вопрос - есть ли ситуация, при которой данные будут искажены? при этом методе, который я привёл? то есть не верно прочитаются из файла, верно прочитаются, но т.к. pchar исказятся и подобное?
Ega23 (2010-12-02 17:56:00) [22]
> но pchar же это строка, и конец её - нулевой символ.
procedure TForm2.Button1Click(Sender: TObject);
var
ss, s1, s2: AnsiString;
begin
s1 := '123';
s2 := '456';
ss := s1 + #0 + s2;
ShowMessage(IntToStr(Length(ss)));
ShowMessage(ss);
end;
Подумай.
RWolf (2010-12-02 17:52:00) [23]PChar — не родной для Delphi формат строки, не нужно его использовать без крайней необходимости. В подавляющем большинстве случаев string подходит лучше.
Dennis I. Komarov (2010-12-02 17:49:00) [24]
> я не хочу использовать потоки, я привёл пример, похожее
> на то, что мне надо.
> без стреамов ответ нужен.
Есть разумное объяснения своего ХОЧУ?
Dennis I. Komarov (2010-12-02 17:48:00) [25]
> Ega23 © (02.12.10 16:26) [1]
Ничего не напоминает? :)))))
privet123 (2010-12-02 17:44:00) [26]строка df:=строка+chr(0)+cтрока 2.
df строка длинная, с нулём посередине.
df:=pchar(df); - строка 2 пропала
privet123 (2010-12-02 17:41:00) [27]я не хочу использовать потоки, я привёл пример, похожее на то, что мне надо.
без стреамов ответ нужен.
Ega23 (2010-12-02 16:26:00) [28]
> но pchar же это строка, и конец её - нулевой символ
PChar - это указатель на тип Char. У него нет конца, это Pointer.
> Способ прочитать с диска - правильно так?
TMemoryStream, TFileStream, TStringStream - читать справку.