นวัตกรรม สิ่งประดิษฐ์ และเทคโนโลยี

กรุณา เข้าสู่ระบบ หรือ สมัครสมาชิก.

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
การค้นหาขั้นสูง  

แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - NAWATTAKAM

หน้า: [1] 2 3 ... 23
2
D.I.Y ทำเองได้ / 22 SIMPLE CEMENT CRAFTS AND IDEAS
« เมื่อ: กุมภาพันธ์ 21, 2019, 12:38:12 PM »

4
Strings / แสดงข้อความ 1 บรรทัดจาก RichEdit
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:49:39 PM »
ในกรณีต้องการแสดงข้อความ มาจากบรรทัดที่กำหนดของ RichEdit

การอ้างอิง ปกติจะอ้างที่ RichEdit1->Lines[0.....]
โดยที่

0 คือบรรทัดแรกของ RichEdit1

แต่จะมีปัญหาเรื่อง TString กับ AnsiString
สามารถแก้ไขโดยใช้ฟังชั่น Strings มาช่วย

C++ Builder

โค๊ด
Edit1->Text=RichEdit1->Lines->Strings[0];

5
Strings / แทรกข้อความใน MEMO
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:49:05 PM »
   
c++ Builder

โค๊ด
Memo1->SelText= "ข้อความที่ต้องการแทรก";


กรณีต้องการแทรกจากกล่องข้อความ (Edit : E_temp)

c++ builder

โค๊ด
Memo1->SelText= E_temp->Text;

6
Strings / Subscript or Superscript in a TRichEdit
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:47:47 PM »


Delphi

โค๊ด
// yOffset values
type
  TCharacterFormat = (CFM_Superscript, CFM_Subscript, CFM_Normal);

procedure RE_SetCharFormat(RichEdit: TRichEdit; CharacterFormat: TCharacterFormat);
var
  // The CHARFORMAT structure contains information about
  // character formatting in a rich edit control.
  Format: TCharFormat;
begin
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_OFFSET;
    // Character offset, in twips, from the baseline.
    // If the value of this member is positive,
    // the character is a superscript;
    // if it is negative, the character is a subscript.
    case CharacterFormat of
      CFM_Superscript: yOffset := 60;
      CFM_Subscript: yOffset := -60;
      CFM_Normal: yOffset := 0;
    end;
  end;
  // The EM_SETCHARFORMAT message sets character formatting in a rich edit control.
  // SCF_SELECTION: Applies the formatting to the current selection
  Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;

// Examples:
// Beispiele:

// Apply Superscript to the current selection
// Markierte Zeichen hoch stellen
procedure TForm1.Button1Click(Sender: TObject);
begin
  RE_SetCharFormat(RichEdit1, CFM_Superscript);
end;

// Apply Subscript to the current selection
// Markierte Zeichen tief stellen
procedure TForm1.Button2Click(Sender: TObject);
begin
  RE_SetCharFormat(RichEdit1, CFM_Subscript);
end;



จาก http://www.swissdelphicenter.ch/torry/showcode.php?id=1331

7
Strings / แบ่งข้อมูล String แล้วมาเก็บไว้ที่ตัวแปร
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:46:04 PM »
จาก http://thaidev.com/nboard/index.php?PHPSESSID=70e32d067ff2a74f46e1d01ce16a6434&topic=3900.0

S,a,b,c: String;

เช่น S := 0000030|Test Testtttttt|aaaa bbbb

อยากจะแบ่งข้อมูล แล้วเก็บไว้ที่ตัวแประประมาณนี้ครับ

a = 0000030
b = Test Testtttttt
c = aaaa bbbb

Delphi

โค๊ด
var
  slist: TStringList;
  a, b, c: string;
begin
  slist := TStringList.Create;
  try
    slist.StrictDelimiter := True;
    slist.Delimiter := '|';
    slist.DelimitedText := '0000030|Test Testtttttt|aaaa bbbb';
    a := slist[0];
    b := slist[1];
    c := slist[2];
  finally
    slist.Free;
  end;
end;

8
Strings / FIND AND REPLACE ด้วย TFindDialog TReplaceDialog
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:45:16 PM »
Delphi

โค๊ด
procedure TForm1.btnFindClick(Sender: TObject);
begin
 FindDialog1.Execute;
end;
...
procedure TForm1.btnReplaceClick(Sender: TObject);
begin
 ReplaceDialog1.Execute;
end;


โค๊ด
procedure TForm1.ReplaceDialog1Replace
   (Sender: TObject);
var
 SelPos, SPos, SLen, TextLength: Integer;
 SearchString  : string;
begin
 with TReplaceDialog(Sender) do begin
  TextLength:=Length(Memo1.Lines.Text);

  SPos:=Memo1.SelStart;
  SLen:=Memo1.SelLength;

  SearchString := Copy(Memo1.Lines.Text,
                       SPos + SLen + 1,
                       TextLength - SLen + 1);

  SelPos := Pos(FindText, SearchString);
  if SelPos > 0 then begin
    Memo1.SelStart := (SelPos - 1) + (SPos + SLen);
    Memo1.SelLength := Length(FindText);
 {remove this in the OnFind procedure:}
    Memo1.SelText := ReplaceText;
  end
  else MessageDlg('Could not find "' + FindText +
      '" in Memo1.', mtError, [mbOk], 0);
  end;
end;

จาก http://delphi.about.com/od/vclusing/l/aa100599.htm

9
Strings / String is numeric?
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:41:00 PM »
Delphi


{1.}
โค๊ด
function IsStrANumber(const S: string): Boolean;
var
  P: PChar;
begin
  P      := PChar(S);
  Result := False;
  while P^ <> #0 do
  begin
    if not (P^ in ['0'..'9']) then Exit;
    Inc(P);
  end;
  Result := True;
end;


{2.}

โค๊ด
function IsStrANumber(const S: string): Boolean;
begin
  Result := True;
  try
    StrToInt(S);
  except
    Result := False;
  end;
end;

// Example:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsStrANumber(edit1.Text) = True then
    ShowMessage('String contains only numbers!');
end;


จาก http://www.swissdelphicenter.ch/en/showcode.php?id=58

10
Strings / reverse a string
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:39:16 PM »
Delphi

โค๊ด

function ReverseString1(const s: string): string;
var
  i, len: Integer;
begin
  len := Length(s);
  SetLength(Result, len);
  for i := len downto 1 do
  begin
    Result[len - i + 1] := s[i];
  end;
end;

function ReverseString2(const Str: string): string;
// by Ido Kanner
var
  ch: Char;
  i, Size: Integer;
begin
  Result := Str;
  Size   := Length(Result);
  if (Size >= 2) then
  // 2 or more chars
  begin
    // For 1 to middle of the string
    for i := 1 to (Size div 2) do
    begin
      // Lets get the charecter of the current place in the string
      ch := Result[i];
      // Place the Current pos of the char
      // with the char of it's mirror place...
      Result[i] := Result[Size - (i - 1)];
      // In the mirror place we will put char of the
      // Original place... And we switched places !!!
      Result[Size - (i - 1)] := ch;
    end
  end;
end;


function ReverseString3(S: string): string;
// by Rudy Velthuis
var
  P, Q: PChar;
  C: Char;
begin
  Result := S;
  if Length(Result) = 0 then Exit;
  P := PChar(Result);
  Q := P + Length(Result) - 1;
  while P < Q do
  begin
    C := P^;
    P^ := Q^;
    Q^ := C;
    Inc(P);
    Dec(Q);
  end;
end;

procedure ReverseString4(var S: string);
// by Rudy Velthuis
var
  P, Q: PChar;
  C: Char;
begin
  if Length(S) = 0 then Exit;
  P := PChar(S);
  Q := P + Length(S) - 1;
  while P < Q do
  begin
    C := P^;
    P^ := Q^;
    Q^ := C;
    Inc(P);
    Dec(Q);
  end;
end;


จาก http://www.swissdelphicenter.ch/en/showcode.php?id=53


11
Strings / split text into words
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:38:25 PM »
Delphi

โค๊ด
procedure SplitTextIntoWords(const S: string; words: TstringList);
var
  startpos, endpos: Integer;
begin
  Assert(Assigned(words));
  words.Clear;
  startpos := 1;
  while startpos <= Length(S) do
  begin
    // skip non-letters
    while (startpos <= Length(S)) and not IsCharAlpha(S[startpos]) do
      Inc(startpos);
    if startpos <= Length(S) then
    begin
      // find next non-letter
      endpos := startpos + 1;
      while (endpos <= Length(S)) and IsCharAlpha(S[endpos]) do
        Inc(endpos);
      words.Add(Copy(S, startpos, endpos - startpos));
      startpos := endpos + 1;
    end; { If }
  end; { While }
end; { SplitTextIntoWords }

function StringMatchesMask(S, mask: string;
  case_sensitive: Boolean): Boolean;
var
  sIndex, maskIndex: Integer;
begin
  if not case_sensitive then
  begin
    S    := AnsiUpperCase(S);
    mask := AnsiUpperCase(mask);
  end; { If }
  Result    := True; // blatant optimism
  sIndex    := 1;
  maskIndex := 1;
  while (sIndex <= Length(S)) and (maskIndex <= Length(mask)) do
  begin
    case mask[maskIndex] of
      '?':
        begin
          // matches any character
          Inc(sIndex);
          Inc(maskIndex);
        end; { case '?' }
      '*':
        begin
          // matches 0 or more characters, so need to check for
          // next character in mask
          Inc(maskIndex);
          if maskIndex > Length(mask) then
            // * at end matches rest of string
            Exit
          else if mask[maskindex] in ['*', '?'] then
            raise Exception.Create('Invalid mask');
          // look for mask character in S
          while (sIndex <= Length(S)) and
            (S[sIndex] <> mask[maskIndex]) do
            Inc(sIndex);
          if sIndex > Length(S) then
          begin
            // character not found, no match
            Result := False;
            Exit;
          end;
          { If }
        end; { Case '*' }
      else if S[sIndex] = mask[maskIndex] then
        begin
          Inc(sIndex);
          Inc(maskIndex);
        end { If }
        else
          begin
            // no match
            Result := False;
            Exit;
          end;
    end; { Case }
  end; { While }
  // if we have reached the end of both S and mask we have a complete
  // match, otherwise we only have a partial match
  if (sIndex <= Length(S)) or (maskIndex <= Length(mask)) then
    Result := False;
end; { stringMatchesMask }

procedure FindMatchingWords(const S, mask: string;
  case_sensitive: Boolean; matches: Tstrings);
var
  words: TstringList;
  i: Integer;
begin
  Assert(Assigned(matches));
  words := TstringList.Create;
  try
    SplitTextIntoWords(S, words);
    matches.Clear;
    for i := 0 to words.Count - 1 do
    begin
      if stringMatchesMask(words[i], mask, case_sensitive) then
        matches.Add(words[i]);
    end; { For }
  finally
    words.Free;
  end;
end;

{
 The Form has one TMemo for the text to check, one TEdit for the mask,
 one TCheckbox (check = case sensitive), one TListbox for the results,
 one Tbutton
}
procedure TForm1.Button1Click(Sender: TObject);
begin
  FindMatchingWords(memo1.Text, edit1.Text, checkbox1.Checked, listbox1.Items);
end;


จาก http://www.swissdelphicenter.ch/en/showcode.php?id=236

12
Strings / highlight HTML-Tags in TRichEdit
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:36:50 PM »



Delphi


โค๊ด
procedure HTMLSyntax(RichEdit: TRichEdit; TextCol, TagCol, DopCol: TColor);
var
  i, iDop: Integer;
  s: string;
  Col: TColor;
  isTag, isDop: Boolean;
begin
  iDop := 0;
  isDop := False;
  isTag := False;
  Col := TextCol;
  RichEdit.SetFocus;

  for i := 0 to Length(RichEdit.Text) do
  begin
    RichEdit.SelStart := i;
    RichEdit.SelLength := 1;
    s := RichEdit.SelText;

    if (s = '<') or (s = '{') then isTag := True;

    if isTag then
      if (s = '"') then
        if not isDop then
        begin
          iDop  := 1;
          isDop := True;
        end
        else
          isDop := False;

    if isTag then
      if isDop then
      begin
        if iDop <> 1 then Col := DopCol;
      end
      else
        Col := TagCol
    else
      Col := TextCol;

    RichEdit.SelAttributes.Color := Col;

    iDop := 0;

    if (s = '>') or (s = '}') then isTag := False;
  end;
 
  RichEdit.SelLength := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.Lines.BeginUpdate;
  HTMLSyntax(RichEdit1, clBlue, clRed, clGreen);
  RichEdit1.Lines.EndUpdate;
end;



จาก https://www.swissdelphicenter.ch/en/showcode.php?id=1143


13
Strings / count the number of words in a string
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:35:01 PM »
Delphi


โค๊ด

function Seps(As_Arg: Char): Boolean;
begin
  Seps := As_Arg in
    [#0..#$1F, ' ', '.', ',', '?', ':', ';', '(', ')', '/', '\'];
end;

function WordCount(CText: string): Longint;
var
  Ix: Word;
  Work_Count: Longint;
begin
  Work_Count := 0;
  Ix         := 1;
  while Ix <= Length(CText) do
  begin
    while (Ix <= Length(CText)) and (Seps(CText[Ix])) do
      Inc(Ix);
    if Ix <= Length(CText) then
    begin
      Inc(Work_Count);

      while (Ix <= Length(CText)) and (not Seps(CText[Ix])) do
        Inc(Ix);
    end;
  end;
  Word_Count := Work_Count;
end;

{
  To count the number opf words in a TMemo Component,
  call: WordCount(Memo1.Text)

  Wenn man die Wörter aus dem Text einer TMemo Komponente
  haben will, einfach WordCount(Memo1.Text) aufrufen.
}



จาก http://www.swissdelphicenter.ch/en/showcode.php?id=806

14
Strings / extract words out of a string
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:34:16 PM »
Delphi


โค๊ด

function GetToken(aString, SepChar: string; TokenNum: Byte): string;
var
  Token: string;
  StrLen: Integer;
  Num: Integer;
  EndofToken: Integer;
begin
  StrLen := Length(aString);
  Num := 1;
  EndofToken := StrLen;
  while ((Num <= TokenNum) and (EndofToken <> 0)) do
  begin
    EndofToken := Pos(SepChar, aString);
    if EndofToken <> 0 then
    begin
      Token := Copy(aString, 1, EndofToken - 1);
      Delete(aString, 1, EndofToken);
      Inc(Num);
    end
    else
      Token := aString;
  end;
  if Num >= TokenNum then
    Result := Token
  else
    Result := '';
end;


//Example/Beispiel:


 GetToken('Word1 Word2 Word3', 2, ' ') = 'Word2'
 GetToken('Word1/Word2/Word3', 2, '/') = 'Word2'


จาก http://www.swissdelphicenter.ch/en/showcode.php?id=333

15
Strings / compare strings with pattern matching
« เมื่อ: กุมภาพันธ์ 14, 2019, 10:32:59 PM »
Delphi


โค๊ด

function Matchstrings(Source, pattern: string): Boolean;
var
  pSource: array [0..255] of Char;
  pPattern: array [0..255] of Char;

  function MatchPattern(element, pattern: PChar): Boolean;

    function IsPatternWild(pattern: PChar): Boolean;
    var
      t: Integer;
    begin
      Result := StrScan(pattern, '*') <> nil;
      if not Result then Result := StrScan(pattern, '?') <> nil;
    end;
  begin
    if 0 = StrComp(pattern, '*') then
      Result := True
    else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
      Result := False
    else if element^ = Chr(0) then
      Result := True
    else
    begin
      case pattern^ of
        '*': if MatchPattern(element, @pattern[1]) then
            Result := True
          else
            Result := MatchPattern(@element[1], pattern);
          '?': Result := MatchPattern(@element[1], @pattern[1]);
        else
          if element^ = pattern^ then
            Result := MatchPattern(@element[1], @pattern[1])
          else
            Result := False;
      end;
    end;
  end;
begin
  StrPCopy(pSource, Source);
  StrPCopy(pPattern, pattern);
  Result := MatchPattern(pSource, pPattern);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Matchstrings('Sean Stanley', 'Sean*') then ShowMessage('strings match!');
  if Matchstrings('Sean', 'Se?n') then ShowMessage('strings match!');
  if not Matchstrings('Sean', 'Se?nn') then ShowMessage('strings don''t match!');
end;


จาก http://www.swissdelphicenter.ch/en/showcode.php?id=307

หน้า: [1] 2 3 ... 23