Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Способ прочитать с диска - правильно так?


Страницы:   1 2

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 - читать справку.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо