🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.csharpbuilder.language.csharp
Article #287

Convert from Delphi 6 to C# Builder

#287
From: Asaf
Date: Mon, 16 Jan 2006 14:48
61 lines
2407 bytes
Hi,

How can I convert these two functions to C# Builder?

Thanks in advanced,
Asaf


function TForm1.SetCharPlacement(sText: String): String;
var
  dc: HDC;
  GCP: TGCPResults;
  lpClass: String;
  nLen: integer;
begin
  DC := GetDc(0);
  SetTextAlign(dc, TA_RTLREADING);

  nLen := Length(sText);
  setLength(lpClass, nLen);
  GCP.lStructSize := sizeof(TGCPResults);
  GCP.lpOutString := nil;
  GCP.lpOrder := nil;
  GCP.lpDx := nil;
  GCP.lpCaretPos := nil;
  GCP.lpClass := pointer(lpClass);
  GCP.lpGlyphs := nil;
  GCP.nGlyphs := nLen;
  GCP.nMaxFit := 0;
  GetCharacterPlacement(dc,
                        PChar(sText),
                        LongBool(nLen),
                        LongBool(0),
                        GCP,
                        GetFontLanguageInfo(dc));
   result := reorder(sText, lpClass);
end;

function TForm1.reorder(text, lpClass: String): String;
var
  buffer: string;
  mode, prevMode, i: integer;
begin
  result := '';
  prevMode := -1;
  buffer := '';
  for i := 1 to length(text) do begin
    mode := 2;
    if (lpClass[i] <> #2) then mode := 1;
    if (mode <> prevMode) then begin
      prevMode := mode;
      if length(buffer) > 0 then result := result + buffer;
      buffer := '';
    end;
    if mode = 2 then
      buffer := buffer + text[i]
    else
      buffer := text[i] + buffer;
  end;
  result := result + buffer;
end; 
Technical Details
Message-ID: <43cbb0d5@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!212.101.4.254.MISMATCH!solnet.ch!solnet.ch!newsfeed.freenet.de!border2.nntp.ams.giganews.com!nntp.giganews.com!pe2.news.blueyonder.co.uk!blueyonder!news-peer-test!btnet!newsfeed.bt.es!caladan.landsraad.net!newsgroups.borland.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 1efe35,5d858e965e7de8c8,start
X-Google-Attributes: gid1efe35,public
X-Google-Language: ENGLISH,ASCII-7-bit
From: "Asaf" <asafgo@hotmail.com>
Newsgroups: borland.public.csharpbuilder.language.csharp
Subject: Convert from Delphi 6 to C# Builder
Date: Mon, 16 Jan 2006 16:48:02 +0200
Lines: 63
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
X-RFC2646: Format=Flowed; Original
NNTP-Posting-Host: 213.8.95.84
Message-ID: <43cbb0d5@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1137422549 213.8.95.84 (16 Jan 2006 06:42:29 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!212.101.4.254.MISMATCH!solnet.ch!solnet.ch!newsfeed.freenet.de!border2.nntp.ams.giganews.com!nntp.giganews.com!pe2.news.blueyonder.co.uk!blueyonder!news-peer-test!btnet!newsfeed.bt.es!caladan.landsraad.net!newsgroups.borland.com!not-for-mail