Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Zugriff auf Record-Eigenschaft nicht möglich

  Alt 15. Mai 2009, 12:20
Hallo jbg,

das Rekord ist in keiner Weise initialisiert. D.h. es ist einfach eine lokale Variable in einer Prozedur, die durch drei Aufrufe bis an fread_AWSTRING gegeben wird:

Delphi-Quellcode:
type
  generic_data_header = record
    data_type_id: ASTRING;
    unique_file_id: ASTRING;
    date_time: AWSTRING;
    locale: AWSTRING;
    n_name_type_value: int32_t;
    name_type_value: array of nvt_triplet;
    n_parent_headers: array of Pointer;
  end;

function Read_Generic(const filename: string): boolean;
var
  fs: TFileStream;
  my_data_header: generic_data_header;
begin
  Result := false;

  fs := TFileStream.Create(filename, fmOpenRead or fmShareDenyNone);
  try
    read_generic_data_header(my_data_header, fs);
  finally
    FreeAndNil(fs);
  end;

  Result := true;
end;

function read_generic_data_header(var data_header: generic_data_header; fs: TFileStream): integer;
begin
  Result := fread_ASTRING(data_header.data_type_id, fs) or
            fread_ASTRING(data_header.unique_file_id, fs) or
            fread_AWSTRING(data_header.date_time, fs) or
            fread_AWSTRING(data_header.locale, fs);
end;
Da wir uns aber ja unter Delphi befinden, habe ich nicht den Drang verspürt für den WideString großartig Speicher zu belegen. Wenn ich eine lokale Widestring-Variable, die nicht in einem Array ist, fülle, dann brauche ich ja auch nix zu belegen, sondern es funktioniert dank Compiler-Magic.

Gruß
Christopher
  Mit Zitat antworten Zitat