2012-05-31 54 views
3

我有一個空的Delphi ClientDataSet CDS文件設置與我需要的所有列/標題/數據類型。我想用PHP將關聯數組添加到CDS行中。這可能嗎?PHP附加到ClientDataSet CDS文件

該陣列可以僅僅是:

{ 
    1: {Name:Captain, Phone:180} 
    2: {Name:Jack, Phone:18009876543} 
    3: {Name:Sparrow, Phone:18887892345} 
} 

我選擇PHP,因爲我精通的語言和我的Web服務器是一個共享Linux主機。基本上我不能在這裏運行Delphi。我願意接受其他可以在這種環境下工作的選擇。謝謝!

編輯:

請參閱這篇文章的評論我的決議。

+3

對於一個好問的問題+1。 'TClientDataSet'是一個非常專有的Delphi/C++ Builder本地數據集(用C++編寫),直到最近的RAD Studio發行版包含源代碼之前,這種格式從未發佈過。我不知道有任何方法可以從任何其他語言或平臺訪問它。我想如果可能的話,他們會把它包含在RadPHP中,但是(至少到XE2)他們不會。 –

+0

就像旁邊一樣,你有沒有考慮在Wine下運行一個Delphi應用程序,並且在它和你的PHP代碼之間進行工作?它應該相當容易實現,因爲你只是在談論數據通信而不是處理UI或OS級別的工作。 –

+0

你的json數據不是數組。數字標識符可能在delphi中無效。 – MajidTaheri

回答

0

我建議你不要直接寫入cds文件。

相反,您可以爲這兩個應用程序(PHP和Delphi)使用通用的xml,在delphi一邊使用XML Transformation與TXmlTransformProvider一起加載和保存它,並且在PHP一側,您只需像往常一樣將它寫入XML 。

看看here關於如何在delphi上設置。

--update

如果你真的需要改變直接的CDS文件(使用XML格式),你只需添加一個新的CDS文件考慮到CDS格式是XML這樣的:

<?xml version="1.0" standalone="yes"?> 
<DATAPACKET Version="2.0"> 
    <METADATA> 
     <FIELDS> 
      <FIELD attrname="Name" fieldtype="string" WIDTH="24"/> 
      <FIELD attrname="Capital" fieldtype="string" WIDTH="24"/>    
     </FIELDS> 
     <PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="2057"/> 
    </METADATA> 
    <ROWDATA> 
     <ROW Name="Argentina" Capital="Buenos Aires"/> 
     <ROW Name="Bolivia" Capital="La Paz"/> 
     <ROW Name="Brazil" Capital="Brasilia"/> 
     <ROW Name="Canada" Capital="Ottawa"/>   
     <ROW Name="United States of America" Capital="Washington"/> 
     //Add your new ROW tag here with your data  
    </ROWDATA> 
</DATAPACKET> 
+0

我想自動創建CDS文件(我需要每年創建數百個)。我想創建它們而不必啓動Delphi並單獨處理每一個......如果推動推動,我可能不得不採取這個路線,雖然 – skibulk

+0

這種方式,我說你甚至不需要CDS文件,只需xml一。 clientdataset將處理直接的xml內容。 –

+0

我仍然需要CDS文件,因爲我將它與閉源第三方軟件一起使用。如果它是我自己的,我可以在TXmlTransformProvider支持中進行編碼。遺憾的是,我不能在這種情況下。感謝您的輸入。 – skibulk