Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/MojuUtils.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.10 by h677, Wed Mar 23 13:07:19 2005 UTC revision 1.10.2.2 by h677, Wed Jun 22 15:25:17 2005 UTC
# Line 29  uses Line 29  uses
29          function ZenToHan(const s: string): string;          function ZenToHan(const s: string): string;
30          function VaguePos(const Substr, S: string): Integer;          function VaguePos(const Substr, S: string): Integer;
31    
32      function ReplaseNoValidateChar( inVal : String): String;          function ReplaseNoValidateChar( inVal : String): String;
33      function IsNoValidID( inID :String): Boolean;          function IsNoValidID( inID :String): Boolean;
34            //<font>タグを全て削除する
35            function        DeleteFontTag( inSource : string) : string;
36    
37  implementation  implementation
38  // ポインター&アセンブラによる高速ポス  // ポインター&アセンブラによる高速ポス
39  function StrPosEx(StrStart, StrEnd, SubstrStart, SubstrEnd: PChar): PChar;  function StrPosEx(StrStart, StrEnd, SubstrStart, SubstrEnd: PChar): PChar;
40  asm  asm
41          PUSH    EBX                  PUSH    EBX
42                  PUSH    ESI                  PUSH    ESI
43          PUSH    EDI                  PUSH    EDI
44    
45          MOV    ESI,ECX        { Point ESI to substr                  }                  MOV    ESI,ECX        { Point ESI to substr                  }
46          MOV    EDI,EAX        { Point EDI to s                        }                  MOV    EDI,EAX        { Point EDI to s                        }
47    
48          MOV    ECX,EDX        { ECX = search length                  }          MOV    ECX,EDX        { ECX = search length                  }
49          SUB    ECX,EAX          SUB    ECX,EAX
# Line 120  var Line 123  var
123  begin  begin
124      Result := S;      Result := S;
125      if OldPattern = '' then Exit;      if OldPattern = '' then Exit;
126      p := PChar(S);          p := PChar(S);
127      e := p + Length(S);          e := p + Length(S);
128      ps := PChar(OldPattern);          ps := PChar(OldPattern);
129      pe := ps + Length(OldPattern);          pe := ps + Length(OldPattern);
130      ReplaceCount := 0;          ReplaceCount := 0;
131      while p < e do begin          while p < e do begin
132          p := AnsiStrPosEx(p, e, ps, pe);                  p := AnsiStrPosEx(p, e, ps, pe);
133          if p = nil then Break;                  if p = nil then Break;
134          Inc(ReplaceCount);                  Inc(ReplaceCount);
135          Inc(p, Length(OldPattern));                  Inc(p, Length(OldPattern));
136      end;          end;
137      if ReplaceCount = 0 then Exit;          if ReplaceCount = 0 then Exit;
138      SetString(Result, nil, Length(S) +          SetString(Result, nil, Length(S) +
139      (Length(NewPattern) - Length(OldPattern)) * ReplaceCount);      (Length(NewPattern) - Length(OldPattern)) * ReplaceCount);
140      p := PChar(S);      p := PChar(S);
141      DestIndex := 1;      DestIndex := 1;
# Line 306  begin Line 309  begin
309          Result := CustomStringReplace(inVal, '\', '¥');          Result := CustomStringReplace(inVal, '\', '¥');
310      Result := CustomStringReplace(Result, '/', '/');      Result := CustomStringReplace(Result, '/', '/');
311          Result := CustomStringReplace(Result, '*', '*');          Result := CustomStringReplace(Result, '*', '*');
312      Result := CustomStringReplace(Result, '>', '>');          Result := CustomStringReplace(Result, '>', '>');
313      Result := CustomStringReplace(Result, '<', '<');          Result := CustomStringReplace(Result, '<', '<');
314      Result := CustomStringReplace(Result, '|', '|');          Result := CustomStringReplace(Result, '|', '|');
315  end;  end;
316  (*************************************************************************  (*************************************************************************
317   * 無効なIDかのチェック(無効例:ID:??? , ID:???0)   * 無効なIDかのチェック(無効例:ID:??? , ID:???0)
318   *************************************************************************)   *************************************************************************)
319  function IsNoValidID( inID :String): Boolean;  function IsNoValidID( inID :String): Boolean;
320  begin  begin
321      inID := Trim(inID);          inID := Trim(inID);
322      if inID = '' then Result := True          if inID = '' then Result := True
323      else begin          else begin
324          inID := Copy(inID, AnsiPos(':', inID) + 1, Length(inID) );                  inID := Copy(inID, AnsiPos(':', inID) + 1, Length(inID) );
325          inID := CustomStringReplace(inID, '?', '');                  inID := CustomStringReplace(inID, '?', '');
326          if (inID = '') or (inID = '0') then Result := True                  if (inID = '') or (inID = '0') then Result := True
327          else Result := False;                  else Result := False;
328      end;          end;
329  end;  end;
330    
331    // *************************************************************************
332    // HTML中の<font>タグを削除する
333    // *************************************************************************
334    function        DeleteFontTag(
335             inSource : string    //タグを削除する文字列
336    ) : string;             //タグ削除語の文字列
337    var
338            pos : Integer;
339    begin
340            Result := '';
341    
342            //</font>を削除
343            inSource := CustomStringReplace( inSource, '</font>', '', True);
344            //<font を全て小文字に変換する
345            inSource := CustomStringReplace( inSource, '<font', '<font', True);
346            //<font 〜 を削除する
347            pos := AnsiPos('<font', inSource);
348            while (pos > 0) do begin
349                    Result := Result + Copy(inSource, 1, pos - 1);
350                    Delete(inSource, 1, pos);
351                    //タグを閉じる'>'までを削除
352            pos := AnsiPos('>', inSource);
353                    Delete(inSource, 1, pos);
354                    pos := AnsiPos('<font', inSource);
355            end;
356    
357            Result := Result + inSource;
358    
359    
360    end;
361    // *************************************************************************
362    
363    
364  end.  end.

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.10.2.2

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26