powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос о записи строки через TFileStream
4 сообщений из 4, страница 1 из 1
Вопрос о записи строки через TFileStream
    #39694087
crossmark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени!
Объясните такой момент.
Привожу фрагмент кода...

Делаю запись в файл одним приложение, а чтение из файла вторым приложением.

Запись файла..........
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var f: TFileStream;
    path: ansistring;
    fname: ansistring;
    nameSize: Integer;
begin
//фрагмент, цикл и лишнее убрано
//интересует именно этот момент
//запись размера имени файла
      fname := ExtractFileName(listbox1.Items.Strings[i]);
      nameSize := length(fname)*sizeof(char);
      f.Write(nameSize, sizeOf(nameSize));

      //запись имени файла
      f.Write(fname[1], nameSize);
end;



К примеру имя файла rt.exe - занимает 6 символов, а размер через функцию в байтах 12.
пишется, все хорошо..

теперь чтение из файла
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var f: TFileStream;
    path: ansistring;
    fname: ansistring;
    nameSize: Integer;
begin
//фрагмент из кода, интересует этот момент!!!
    f.Read(nameSize, sizeof(nameSize)); //размер имени фала
//
    setLength(fname, namesize);
    f.Read(fname[1], nameSize);



а вот при чтении получается интересное.
Длина строки, символов, а размер считывается 12, и в строке получается мусор в конце.
я сделал вот такую строку namesize := Round(namesize / sizeof(char));
и получает имя нормально.
Вот собственно сам вопрос, я не правильно сразу писал, или не правильно считал?
или так должно быть, писать в байтах, читать в символах?
...
Рейтинг: 0 / 0
Вопрос о записи строки через TFileStream
    #39694093
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crossmark,

SizeOf(Char) -> SizeOf(AnsiChar).
...
Рейтинг: 0 / 0
Вопрос о записи строки через TFileStream
    #39694094
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
crossmark,

Ошибка тут: fname: ansi string; а sizeof(char)
...
Рейтинг: 0 / 0
Вопрос о записи строки через TFileStream
    #39694098
crossmark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот блин, Спасибо!

смешал, люди-кони ))).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос о записи строки через TFileStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]