powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / String OR PChar inTFileStream
5 сообщений из 5, страница 1 из 1
String OR PChar inTFileStream
    #32217908
Andrei_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, подскажите плиз, чем лучше:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var Size : Integer;
{  ---------------- Write---------------}  
 
  // store cName

  Size := Length(cName) +  1 ; // include terminating # 0 
  Stream.Write(Size, SizeOf(Size)); // store length of the string
  Stream.Write(PChar(cName)^, Size); // now the string itself

{  ---------------- Read---------------}  
 

  Stream.Read(Size, SizeOf(Size)); // length of the string
  StrBuffer := AllocMem(Size); // get temporary memory
  Stream.Read(StrBuffer^, Size); // read the string
  cName := StrBuffer; 
  FreeMem(StrBuffer);



Чем это:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var Size : Integer;
{  ---------------- Write---------------}  
 
  // store cName

  Size := Length(cName) +  1 ; // include terminating # 0 
  Stream.Write(Size, SizeOf(Size)); // store length of the string
  Stream.Write(cName, Size); // now the string itself

{  ---------------- Read---------------}  
 

  Stream.Read(Size, SizeOf(Size)); // length of the string
  Stream.Read(cName, Size); // read the string



Чем лучше юзать PChar при записи в фал????
...
Рейтинг: 0 / 0
String OR PChar inTFileStream
    #32218839
Andrei_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, ХЕЛПППП!

ПИШУ
Код: plaintext
1.
2.
  Size := Length(cValue) +  1 ; // include terminating # 0 
  Stream.Write(PChar(cValue)^, Size);


Получаю в файле только 'a'

Пишу
Код: plaintext
1.
2.
  Size := Length(cValue)+ 1 ;
  Stream.Write(cValue, Size);


Получаю в файле '4ь'
...
Рейтинг: 0 / 0
String OR PChar inTFileStream
    #32218841
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stream.Write(cValue, Size);
...
Рейтинг: 0 / 0
String OR PChar inTFileStream
    #32218842
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин
Код: plaintext
1.
Stream.Write(cValue[ 1 ], Size);
...
Рейтинг: 0 / 0
String OR PChar inTFileStream
    #32218864
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, у меня обе строчки кода (внизу) дают одинаковый результат.
Причем в файле я явственно вижу слово 'Speaker':

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
procedure TfmStock.tvListSaveNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var s : String;
begin
    inherited;
    s := 'SPEAKER';
//    Stream.Write( PCHar(s)^, Length(s)+ 1  );
    Stream.Write( s[ 1 ], Length(s)+ 1  );
end;


Глянь еще в свойство StringOptions.toSaveCaptions
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / String OR PChar inTFileStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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