Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

ка кзаписать структуру в нетепизированный файл?   Найти похожие ветки 

 
novice06   (2006-05-26 15:18) [0]

есть

...
type
 TFirstType = record
   a : integer ;
   b : string ;
   c : array [0..3] of boolean ;
end;

type
 TSecondType = record
   f : real ;
   s : string ;
   h : array[0..10] of TfirstType ;
end ;

...

var
 a : TSecondType ;
begin
 a.a := 10 ;
 a.b := "ñòðîêà" ;
 a.c[0] := true
 a.h[0] := .....
 ....
как сохранить переменную А (её содержимое) в нетипизированный файл ???


 
tesseract ©   (2006-05-26 15:27) [1]


type
TFirstType = record
  a : integer ;
  b : string [25];
  c : array [0..3] of boolean ;
end;

type
TSecondType = record
  f : real ;
  s : string[25] ;
  h : array[0..10] of TfirstType ;
end ;
var f:file;
   NumWriten;

begin
AssignFile(F,filename);
try
Reset(F,SizeOf(TsecondType));
BlockWrite(f,a,1,NumWriten);
finally
CloseFile(F);
end;
end;


 
antonn ©   (2006-05-26 15:33) [2]

кстати, не подскажите, как сохранить string[1024]? :)
т.е. мне нужно большую строку сохранить, 255 символов не хватает. может какой другой тип есть?


 
Desdechado ©   (2006-05-26 15:36) [3]

что мешает сделать 4 шт. по 255


 
tesseract ©   (2006-05-26 15:38) [4]

antonn Delphi не паскаль, если у тебя ничего не изменно, то DElphi трактует string как AnsiString.
<help>
AnsiString
~2^31 characters 4 bytes to 2GB
8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
</help>

Только не думай, что 1024 символа больше 2^31 :-)


 
Desdechado ©   (2006-05-26 16:07) [5]

tesseract ©   (26.05.06 15:38) [4]
видимо, спрашивалось о строке в записи
а там нельзя динамические строки использовать при сохранении в типизированный файл
кстати, "трактует string как AnsiString" - это зависит от настроек
указанное поведение - по умолчанию, но возможны и другие варианты


 
antonn ©   (2006-05-26 16:21) [6]

Desdechado ©   (26.05.06 15:36) [3]
для простоты и удобства:
type
TTextRec = record
 t1:string[255];
 x,y:integer;
 //и еще кучка св-в
end;

а теперь нужно строку поболее, чтобы потом просто сделать примерно так:
label1.caption:=textrec.t1 или textrec.t1:=label1.caption;

tesseract ©   (26.05.06 15:38) [4]
а как это в коде будет выглядеть? сорри за возможный тупизм:)


 
tesseract ©   (2006-05-26 16:22) [7]


> указанное поведение - по умолчанию, но возможны и другие
> варианты

Это я указал. А про динамику как-то не учёл :-(
Мало работаю со строками.

тогда выход один - array[0..1024] of char;


 
han_malign ©   (2006-05-26 16:26) [8]


> как сохранить string[1024]? :)

- а без улыбок - если нужен одинаковый размер записей, без динамических изысков и сканирований:

szStr: array[0..1024]of char;// +1 символ для терминирующего нуля

lstrcpyn(szStr, PChar(str), sizeof(szStr));
Str:= szStr;


 
antonn ©   (2006-05-26 18:51) [9]

han_malign ©   (26.05.06 16:26) [8]
lstrcpyn(szStr, PChar(str), sizeof(szStr));
Str:= szStr;

эх, этож придется по всему документу прошариваться, позаменять (моя структура много где мелькает)...



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
2-1148281922
deltav1
2006-05-22 11:12
2006.06.11
Время


2-1148380907
Ironman83
2006-05-23 14:41
2006.06.11
Литература


15-1147378024
Kerk
2006-05-12 00:07
2006.06.11
Сборная России U-17 в финале чемпионата Европы по футболу!


2-1148359093
cherman
2006-05-23 08:38
2006.06.11
Задача


15-1147688857
07BB
2006-05-15 14:27
2006.06.11
XML+Java