GetWindowsDirectory帶出指標值

2021-08-07 13:08:50 字數 1629 閱讀 1243

發現自己這麼多年是個假程式設計師,最基礎的東西不清楚居然混了這麼多年。

近期做了乙個小功能,需要從動態庫中返回字串,一開始的實現是這樣的:

procedure fun1(p1: pchar; var p2: pchar); stdcall;

var str: string;

begin

str:= p1;

p2:= pchar(str+str);

end;

這樣宣告的話,後邊的pchar的內容(指標/位址)是可修改的(pchar的引用傳遞)。

但是,我想把var給去掉,弄了半天也弄不成,怎麼實現呢?

procedure test(p: pchar); stdcall;

const

title = 'title ';

var str: string;

begin

str := p;

strcopy(p, title);

strcat(p, pchar(str));

end;

這種實現是pchar的值傳遞,要得到dll中的字串,需要用到strcopy方法,

這麼多年居然沒用過這個方法,很汗顏...

以為自己已經知道了,其實還差得多。

相關操作

function getwindir: string;

vardir: array [0..max_path] of char;

begin

getwindowsdirectory(dir, max_path);

result := strpas(dir);

end;

// or:

function windowsdirectory: string;

varwindir: pchar;

begin

windir := stralloc(max_path);

getwindowsdirectory(windir, max_path);

result := string(windir);

if result[length(result)] <> '\' then

result := result + '\';

strdispose(windir);

end;

// or:

function getwindowsdirectory(var s: string): boolean;

varlen: integer;

begin

len := windows.getwindowsdirectory(nil, 0);

if len > 0 then

begin

setlength(s, len);

len := windows.getwindowsdirectory(pchar(s), len);

setlength(s, len);

result := len > 0;

end else

result := false;

end;

關於函式引數中有指標無法帶出位址

本人菜鳥乙隻,寫了乙個讀入全部檔案的函式,介面一直有問題,如下 int readallfile wstring sfilepath,wchar sfile,int mod read the entire file into the buffer.file.seekg 0,file.beg szenc...

Spring boot定製錯誤資料攜帶出去

spring boot出現錯誤以後,會來到 error請求 會被basicerrorcontroller處理,自適應返回 瀏覽器訪問,返回頁面 客戶端訪問,返回json 獲取返回的響應資料 在abstracterrorcontroller中定義 basicerrorcontroller的父類 處理e...

Cocopods安裝與使用,順帶出的幾個問題提一下

之前是有裝cocopods,太久沒用了,出了這個錯誤warning unable to pull data from bad response not found 404 latest specs.4.8.gz 應該 映象的問題,所以我把它刪除了,然後換上阿里的映象,步驟如下 1 終端上輸入這句 g...