ich habe wieder mal ein Problem, bei dem ich nicht mehr weiter komme.
Habe eine kleine DLL mit einer Function geschrieben.
Übergeben wird ein Dateiname, eine Nummer und eine Kennung.
Die DLL liest dann aus der Datei (*.INI) etwas aus und soll sie als PWideChar zurück geben. Das muss auch so sein, denn darauf hab ich keinen Einfluss.
Irgendwie muss ich aus dem ausgelsenen String der INI Datei ein PWideChar machen, bin aber ratlos, da ich schon einiges probiert (als kommentar im Quelltext) hab. Hat jemand eine Idee wie ich das machen muss?
Viele Grüße
Michael
Code: Alles auswählen
function ReadString(Dateiname : PWideChar; Number : Integer; Kennung : PWideChar) : PWideChar; stdcall;
var
ini: TIniFile;
Filename : String;
Position : String;
INI_Kennung: String;
iniwert : String;
wertW : WideString;
wertPWC : PWideChar;
begin
Filename := 'C:\' + WideCharToString(Dateiname) + '.ini';
ini := TIniFile.Create(Filename);
Position := 'Position' + IntToStr(Number);
INI_Kennung := WideCharToString(Kennung);
iniwert := ini.ReadString (Position, INI_Kennung, 'Nix');
ini.Free;
// Alle Kommentare hier hab ich schon probiert, jedoch immer mit dem Ergebniss eines Fehlers
// wertWS := UTF8Decode(iniwert);
// StringToUnicodeChar(iniwert,wertPWC,30);
// wertPWC := StrCopy(iniwert,0,Length(wert));
//nok StrCopy(wertPWC,PWideChar(wertWS));
// getmem(tempwert, 256);
// wertPWC := StringToWideChar(iniwert, tempwert, 256);
// freemem(tempwert,256);
// StringToWideChar(iniwert,wertPWC,30);
// iniwert := 'Hier ist der String';
// StringToWideChar(iniwert,wertPWC,30);
// Wenn ich den PWideChar direkt initialisiere, läuft alles korrekt.
wertPWC := 'Hier ist der String';
result := wertPWC;
end;
exports
ReadString;