我想做出採取ShortString短的陣列作爲參數的過程如何通過ShortString短的陣列的方法
procedure f(const a, b: Array of shortstring);
我想與已知長度的陣列和已知長度例如的shortstrings調用此
var
A, B: array[1..2] of string[5];
C, D: array[1..40] of string[12];
begin
f(A,B);
f(C,D);
end;
這導致編譯器錯誤E2008不兼容的類型。 這是爲什麼?我可以編寫一個可以使用短串數組(任何長度的數組/字符串)的過程嗎?
爲什麼使用shortstring?
短缺是現有記錄中的字段。有很多這樣的記錄有很多短串。爲了將數據從渦輪增強B-Tree Filer遷移到SQL數據庫,一步就是將記錄轉換爲數據集,並將數據轉換回記錄,以確認所有字段都在兩個方向上正確轉換。我一直在記錄上使用CompareMem
來檢查這個問題,但它沒有提供足夠的信息來說明轉換錯誤在哪個字段中。因此創建了一個小程序,它可以從記錄定義中生成代碼來比較兩條記錄。這是代碼生成器,我需要一個函數來比較短字符串。它最終在短褲上使用了CompareMem
。
爲什麼要使用短弦?對於我的生活,當他們有用時我無法解決。 –
只需使用一個字符串數組。不要介意宣佈長度。你的生活會容易得多。 – Johan
@David:前段時間我發現了一個很好用的東西。在一些大量遞歸的基於樹的解析器代碼中,我遇到了難以跟蹤的內存泄漏。通過將符號對象從符號名稱的**字符串**更改爲「ShortString」,該名稱在FastMM的FullDebugMode報告的內存轉儲中內聯顯示,使得查找問題變得更加容易。 –