DLL i rekordy

0
type
 TInfo = Packed Record
  Encoder, Version, Url, Year, Copyright: String[255];
  Comments, Lyrics: WideString;
  FileSize: LongInt;
end;
 PInfo = ^TInfo;

var
 function ShowInfo(var FileName: PWideChar; var Info: PInfo): Boolean; external 'info.dll';

A teraz pytanie. Jak pobrać poprzez funkcję ShowInfo, informacje do rekordów?
Czyli ShowInfo('C:\plik.rds',.................);

Próbowałem deklarować

var
TagsData : PInfo;
begin
ShowInfo('C:\plik.rds',TagsData);
end;

ale kończyło się to na błędzie EAccessViolation.

0

a tą biblioteke sam robiłeś czy to sz kąd masz? jak sam robiłeś to pokaż kod procedury :-/

0

biblioteki sam nie robiłem, kod mam (jest dość długi ok. 650 linii), ale widzę, że coś z pamięcią jest nie tak

0

function ShowInfo(var FileName: PWideChar; var Info: PInfo):

nie widze sensu żeby dawać dyrektywe

var

w Info - przecież to i tak jest wskazanie na rekord który jest umieszczony w pamięci. myślę, że jakbyś się tego pozbył, a później w tej procedurze zrobi takei coś:

with Info^ do
begin
  FileSize := 99999; /itd
end;

to powinno to pomóc. jak nie to błąd może być gdzie indziej.

a co do przytoczenia kodu to tylko samą funkcję :-8 nie trza całej biblioteki, no chyba, że procedury są aż tak powiązane se sobą :-/

//kuzewka, klawiz mi sie wcisknął i nie moze sie odcisknąć :-[ (s)

1 użytkowników online, w tym zalogowanych: 0, gości: 1