es sind doch alle exports stdcall
so und ich habs nun auch mit FreeAndNil(printerlist); bzw mit printerlist.free; versucht aber am ende bekomm ich immernoch den fehler.
Edit: wenn ich das Programm ohne delphi starte dann bekomm ich vo windows nur dieses report an windows fenster aber keine invalid Pointer fehlermeldung mehr.
So hab den Source mal aktualisiert bekomme trotz des rausnehmens vom string immernoch die fehlermeldung beim beenden.
Aktuelle Funktion:
Delphi-Quellcode:
function Druckerauslesen():Pchar; stdcall;
var printerlist: tstringlist;
ResStr : array[0..255] of char;
mainprint: PChar;
begin
GetProfileString('Windows','device','',ResStr,255);
printerlist := TStringlist.Create;
printerlist.AddStrings(printer.printers);
mainprint := PChar(StrPas(ResStr));
printerlist.Add('');
printerlist.Add(Copy(mainprint,0,pos(',',mainprint)-1));
result:=printerlist.GetText;
printerlist.free;
end;
und Aufrufen tue ich das mit :
ShowMessage(StrPas(Druckerauslesen));