الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في تحويل كود من C إلى Delphi

مغلق
بدأه أبو محمد الهذلي في 1 يوليو 2003 · 3 رد · 649 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

حيث أني لا أعرف لغة البرمجة C ووجدت كوداً محتاجاً إليه فأرجو منكم المساعدة في تحويل هذا الكود من C إلى Delphi

مصدر الكود من موقع مايكروسوف

http://msdn.microsoft.com/library/default....webocstream.asp

يستحسن الذهاب إلى العنوان لفهم الكود جيداً .

من المعلوم أنك لا تستطيع ( أقصد لا أستطيع) عرض ملفات html في المكون WebBrowser إلا باستخدام الإجرائية Navigate أو Navigate2 وهي تطلب منك مسار الملف على القرص أو عنوانه على الويب وبذلك يصعب عليك تكوين ملفاتك وعرضها في WebBrowser

ثم بعد البحث وجد هذا الكود ووظيفته إتاحة الفرصة للمبرمج كي يكوِّن ملفاته الديناميكية في الذاكرة دون الحاجة لحفظها على القرص

HRESULT LoadWebBrowserFromStream(IWebBrowser* pWebBrowser, IStream* pStream)
{
HRESULT hr;
IDispatch* pHtmlDoc = NULL;
IPersistStreamInit* pPersistStreamInit = NULL;

    // Retrieve the document object.
    hr = pWebBrowser->get_Document( &pHtmlDoc );
    if ( SUCCEEDED(hr) )
    {
        // Query for IPersistStreamInit.
        hr = pHtmlDoc->QueryInterface( IID_IPersistStreamInit,  (void**)&pPersistStreamInit );
        if ( SUCCEEDED(hr) )
        {
            // Initialize the document.
            hr = pPersistStreamInit->InitNew();
            if ( SUCCEEDED(hr) )
            {
                // Load the contents of the stream.
                hr = pPersistStreamInit->Load( pStream );
            }
            pPersistStreamInit->Release();
        }
    }
}

السبب في صعوبة التحويل أن بعض الأنواع لم أجدها مصرحاً عنها في وحدات Delphi أو يكون تصريح منهجها تصريحاً محمياً .

#2

الحمد لله وجدت الحل على هذا الرابط

http://www.lmc-mediaagentur.de/dpool/tips/0665.htm

وهذا هو الكود وهو شغال !!

uses ActiveX;

{Loads the contents of the "Stream" into the "WebBrowser"
"Stream" should contain HTML code}
procedure LoadStream(WebBrowser: TWebBrowser; Stream: TStream);
var
  PersistStreamInit: IPersistStreamInit;
  StreamAdapter: IStream;
  MemoryStream: TMemoryStream;
begin
  {Load empty HTML document into Webbrowser to make "Document" a valid HTML document}
  WebBrowser.Navigate('about:blank');
  {wait until finished loading}
  repeat
    Application.ProcessMessages;
    Sleep(0);
  until
    WebBrowser.ReadyState = READYSTATE_COMPLETE;
  {Get IPersistStreamInit - Interface}
  if WebBrowser.Document.QueryInterface(IPersistStreamInit, PersistStreamInit) = S_OK then 
  begin
    {Clear document}
    if PersistStreamInit.InitNew = S_OK then
    begin
      {Make local copy of the contents of Stream if you want to use Stream directly, you have to
      consider, that StreamAdapter will destroy it automatically}
      MemoryStream:= TMemoryStream.Create;
      try
        MemoryStream.CopyFrom(Stream, 0);        
        MemoryStream.Position:= 0;
      except
        MemoryStream.Free;
        raise;
      end;
      {Use Stream-Adapter to get IStream Interface to our stream}
      StreamAdapter:= TStreamAdapter.Create(MemoryStream, soOwned);
      {Load data from Stream into WebBrowser}
      PersistStreamInit.Load(StreamAdapter);
    end;
  end;
end;


{Let's test. You could also create a TResourceStream or TFileStream etc. here.}
procedure TForm1.Button2Click(Sender: TObject);
var
  S: TStringStream;
begin
  S:= TStringStream.Create('

Stream Test

:This HTML content ' +
'is being loaded from a stream.');
try
LoadStream(WebBrowser1, S);
finally
S.Free;
end;
end;

#3

السلام عليكم

شئ جيد انك وجدت حل لسؤالك بنفسك (f)

أحيي فيك روح التعاون على نشر العلم و أتمنى من الأخرين الاقتداء بك .

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#4

السلام عليكم ورحمة الله وبركاته

أخي tmaaa أشكرك على عباراتك الودية

وأسأل الله الكريم أن يزيدني وإياكم من واسع فضله

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…