From 98b83a79eb7962776e63ea29d44aff093070f99e Mon Sep 17 00:00:00 2001 From: naru Date: Fri, 26 Mar 2004 12:26:12 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'YASAGURE1-10'. --- sakurasuite/DirectSstp.dcr | Bin 1724 -> 0 bytes sakurasuite/DirectSstp.pas | 626 ------------------------- sakurasuite/IdSLPP20.dcr | Bin 1720 -> 0 bytes sakurasuite/IdSLPP20.pas | 307 ------------- sakurasuite/Sakura.pas | 51 --- sakurasuite/SakuraAPI.pas | 202 --------- sakurasuite/SakuraScriptFountain.dcr | Bin 1744 -> 0 bytes sakurasuite/SakuraScriptFountain.pas | 361 --------------- sakurasuite/SakuraSeeker.dcr | Bin 1728 -> 0 bytes sakurasuite/SakuraSeeker.pas | 473 ------------------- sakurasuite/SakuraSuite.dpk | 50 -- sakurasuite/SakuraSuite.res | Bin 1536 -> 0 bytes sakurasuite/SsParser.pas | 653 --------------------------- sakurasuite/SsPlayTime.dcr | Bin 3428 -> 0 bytes sakurasuite/SsPlayTime.pas | 384 ---------------- sakurasuite/manual/directsstp.html | 144 ------ sakurasuite/manual/index.html | 48 -- sakurasuite/manual/sakuraprocess.html | 52 --- sakurasuite/manual/sakurascriptfountain.html | 80 ---- sakurasuite/manual/sakuraseeker.html | 119 ----- sakurasuite/manual/sakurasuite.css | 12 - sakurasuite/manual/slpp20.html | 27 -- sakurasuite/manual/ssparser.html | 298 ------------ sakurasuite/manual/ssplaytime.html | 74 --- sakurasuite/sample_editor/Project1.dpr | 13 - sakurasuite/sample_editor/Project1.res | Bin 876 -> 0 bytes sakurasuite/sample_editor/Unit1.dfm | 478 -------------------- sakurasuite/sample_editor/Unit1.pas | 43 -- sakurasuite/sample_parser/Project1.dpr | 13 - sakurasuite/sample_parser/Project1.res | Bin 876 -> 0 bytes sakurasuite/sample_parser/Unit1.dfm | 200 -------- sakurasuite/sample_parser/Unit1.pas | 100 ---- sakurasuite/sample_parser/pattern.txt | 85 ---- sakurasuite/sample_seeker/Project1.dpr | 13 - sakurasuite/sample_seeker/Project1.res | Bin 876 -> 0 bytes sakurasuite/sample_seeker/Unit1.dfm | 112 ----- sakurasuite/sample_seeker/Unit1.pas | 126 ------ sakurasuite/ssparser.dcr | Bin 1720 -> 0 bytes sakurasuite/ssparser.html | 330 -------------- 39 files changed, 5474 deletions(-) delete mode 100644 sakurasuite/DirectSstp.dcr delete mode 100644 sakurasuite/DirectSstp.pas delete mode 100644 sakurasuite/IdSLPP20.dcr delete mode 100644 sakurasuite/IdSLPP20.pas delete mode 100644 sakurasuite/Sakura.pas delete mode 100644 sakurasuite/SakuraAPI.pas delete mode 100644 sakurasuite/SakuraScriptFountain.dcr delete mode 100644 sakurasuite/SakuraScriptFountain.pas delete mode 100644 sakurasuite/SakuraSeeker.dcr delete mode 100644 sakurasuite/SakuraSeeker.pas delete mode 100644 sakurasuite/SakuraSuite.dpk delete mode 100644 sakurasuite/SakuraSuite.res delete mode 100644 sakurasuite/SsParser.pas delete mode 100644 sakurasuite/SsPlayTime.dcr delete mode 100644 sakurasuite/SsPlayTime.pas delete mode 100644 sakurasuite/manual/directsstp.html delete mode 100644 sakurasuite/manual/index.html delete mode 100644 sakurasuite/manual/sakuraprocess.html delete mode 100644 sakurasuite/manual/sakurascriptfountain.html delete mode 100644 sakurasuite/manual/sakuraseeker.html delete mode 100644 sakurasuite/manual/sakurasuite.css delete mode 100644 sakurasuite/manual/slpp20.html delete mode 100644 sakurasuite/manual/ssparser.html delete mode 100644 sakurasuite/manual/ssplaytime.html delete mode 100644 sakurasuite/sample_editor/Project1.dpr delete mode 100644 sakurasuite/sample_editor/Project1.res delete mode 100644 sakurasuite/sample_editor/Unit1.dfm delete mode 100644 sakurasuite/sample_editor/Unit1.pas delete mode 100644 sakurasuite/sample_parser/Project1.dpr delete mode 100644 sakurasuite/sample_parser/Project1.res delete mode 100644 sakurasuite/sample_parser/Unit1.dfm delete mode 100644 sakurasuite/sample_parser/Unit1.pas delete mode 100644 sakurasuite/sample_parser/pattern.txt delete mode 100644 sakurasuite/sample_seeker/Project1.dpr delete mode 100644 sakurasuite/sample_seeker/Project1.res delete mode 100644 sakurasuite/sample_seeker/Unit1.dfm delete mode 100644 sakurasuite/sample_seeker/Unit1.pas delete mode 100644 sakurasuite/ssparser.dcr delete mode 100644 sakurasuite/ssparser.html diff --git a/sakurasuite/DirectSstp.dcr b/sakurasuite/DirectSstp.dcr deleted file mode 100644 index a55c4b9a7e6cc297be71a542a5380ee9fea7a355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmZ|PF>=*F41i&gVHnELQL5ws96&RWf{uY4KqbdemuskCIEQM^K%pa~es405e|PPd zmq6_IS!=Cj@7g<0L_~2qEi|8OKi-IZBy&1l$*p{rFY--plDyZZY2-Rr&Z z1C95aSMqkI?P~9R9z%qmM6AG(rc{;GpOX9EzZjswL5C&^En)%%4RZt%g%)vv!oZ0K z5{2HLt3-n%kSMeWO-Y5p5l9r8K?)QGM<7vX5q{DNgCmeAw3skVQH5g<9Dzik*DG-)8XSQ{q1WpQB^n%oM4{KKOeGo|fkdI#Yc3@k9Dzik=O?gM zqQMbJ6k3A$hbYF(9b-=vT0#X1gCmeA^!jY3M1v!cDD?WIu0(?)kSO%}+&m=0;0PoN zy_P~M(clOq3cZ#|Dbe5vBnmy3P_z;ajzFT&Qp~?ZVQ>TzWAC-JREY*hAW`VG>`aLU zM<7w?wIp4M21g)K=(Su!i3Ud?QRualQ;7ygAW`VG%u9&|MbE%VIB^nL2e{g*Ep`^Os$T2T!*btj_aaTeo?YrI(ljDI2#53+n#k$ zF^WdPWrf_`-90?aTU>UKeqh`4d&QPs`HMT9^Xn26X@c diff --git a/sakurasuite/DirectSstp.pas b/sakurasuite/DirectSstp.pas deleted file mode 100644 index 59f0229..0000000 --- a/sakurasuite/DirectSstp.pas +++ /dev/null @@ -1,626 +0,0 @@ -{********************************************************} -{ DirectSstp - SSTP Client using DirectSSTP method } -{ } -{ Copyright (c) 2001-2003 naruto/CANO-Lab } -{********************************************************} - - -unit DirectSstp; - -interface - -uses - Windows, Messages, SysUtils, Classes, Dialogs, ExtCtrls, Forms; - -type - //ƒGƒ‰[ƒR[ƒh - TSstpResult = ( - srOk, - srNoContent, - srBreak, - srBadRequest, - srRequestTimeout, - srConflict, - srRefuse, - srNotImplemented, - srServiceUnavailable, - srNotLocalIP, - srInBlackList, - srUnknownError - ); - - TGiveType = (gtDocument, gtSongname); - - TSstpSendOption = (soNoTranslate, soNoDescript); - TSstpSendOptions = set of TSstpSendOption; - - //Ä‘—ƒLƒ…[—p - TSendScript = class(TObject) - private - FScript: String; - FOption: TSstpSendOptions; - FID: integer; - FGhost: String; - procedure SetOption(const Value: TSstpSendOptions); - procedure SetScript(const Value: String); - procedure SetGhost(const Value: String); - public - constructor Create(const AScript: String; const AOption: TSstpSendOptions; - const AGhost: String; const ID: integer); - property Script: String read FScript write SetScript; - property Option: TSstpSendOptions read FOption write SetOption; - property Ghost: String read FGhost write SetGhost; - property ID: integer read FID; - end; - - TSstpResendEvent = procedure (Sender: TObject; ID: integer; - const Script: String) of Object; - - TDirectSstp = class(TComponent) - private - FStatusCode: Integer; - FSstpSender: String; - FSentLog: TStringList; - FRecvLog: TStringList; - FRecvLogString: String; - FNextCueID: integer; - FSendCue: TList; - FTimer: TTimer; - FInterval: integer; - FOnResendResend: TSstpResendEvent; - FOnResendTrying: TSstpResendEvent; - FOnResendEnd: TSstpResendEvent; - FOnResendCountChange: TNotifyEvent; - FSleep: boolean; - FOnAfterConnection: TNotifyEvent; - FWindowHandle: THandle; - FDirectSstpResult: String; - FTargetHWnd: THandle;//DirectSSTP - FBusy: boolean; - FTimeOut: integer; //Ú‘±’†‚͕ʂ̐ڑ±—v‹‚ðŽó‚¯•t‚¯‚È‚¢ - procedure SetSStpSender(const Value: String); - function GetRecvLog: String; - function GetSentLog: String; - procedure SetInterval(const Value: integer); - procedure SetOnResendResend(const Value: TSstpResendEvent); - procedure SetOnResendEnd(const Value: TSstpResendEvent); - procedure SetOnResendTrying(const Value: TSstpResendEvent); - function GetCueCount: integer; - procedure SetOnResendCountChange(const Value: TNotifyEvent); - procedure SetSleep(const Value: boolean); - procedure SetOnAfterConnection(const Value: TNotifyEvent); - procedure WndProc(var Msg: TMessage); - procedure SetTargetHWnd(const Value: THandle); - procedure SetTimeOut(const Value: integer); //DirectSSTP—p - protected - function ExtractCode(const CodeStr: String): integer; - function CodeToStatus(const Code: integer): TSstpResult; - function GetLastStatus: TSstpResult; - procedure FlushLog; - procedure ResendTimerEvent(Sender: TObject); - procedure Loaded; override; - public - function ConnectSstp(Source: TStrings): TSstpResult; - property StatusCode: Integer read FStatusCode; - property LastStatus: TSstpResult read GetLastStatus; - property SentLog: String read GetSentLog; - property RecvLog: String read GetRecvLog; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function SstpGIVE(const Document: String): TSstpResult; - function SstpGIVE1_1(const Data: String; - const DataType: TGiveType = gtDocument): TSstpResult; - function SstpCOMMUNICATE(const Sentence: String; - const Port: integer = 0): TSstpResult; - function SstpSEND(const Script: String; - const Option: TSstpSendOptions = []; - const Ghost: String = ''): TSstpResult; overload; - function SstpSEND(const Script: TStrings; - const Option: TSstpSendOptions = []; - const Handle: HWND = 0; - const Ghost: String = ''): TSstpResult; overload; - function SstpEXECUTE(const Command: String): String; - function SstpExGetName: String; - function SstpExSetCookie(const Key, Value: String): TSstpResult; - function SstpExGetCookie(const Key: String): String; - function SstpExGetVersion: String; - function SstpExQuiet(const Quiet: boolean): TSstpResult; - function SstpSENDCue(const Script: String; - const HighPriority: boolean = false; - const Option: TSstpSendOptions = []; - const Ghost: String = ''): integer; - property CueCount: integer read GetCueCount; - property Handle: THandle read FWindowHandle; - procedure ClearCue; - published - property TimeOut: integer read FTimeOut write SetTimeOut default 2000; - property SstpSender: String read FSStpSender write SetSStpSender; - property Interval: integer read FInterval write SetInterval default 5000; - property Sleep: boolean read FSleep write SetSleep; - property TargetHWnd: THandle read FTargetHWnd write SetTargetHWnd; - property OnResendTrying: TSstpResendEvent read FOnResendTrying write SetOnResendTrying; - property OnResendEnd: TSstpResendEvent read FOnResendEnd write SetOnResendEnd; - property OnResendResend: TSstpResendEvent read FOnResendResend write SetOnResendResend; - property OnResendCountChange: TNotifyEvent read FOnResendCountChange write SetOnResendCountChange; - property OnAfterConnection: TNotifyEvent read FOnAfterConnection write SetOnAfterConnection; - end; - -const - //‚±‚̃Gƒ‰[‚́ASSTPƒT[ƒo‚ªƒXƒe[ƒ^ƒX‚ð•Ô‚³‚¸‚ɐؒf‚µ‚½‚Æ‚«‚È‚Ç‚É•Ô‚é - UnknownError = -1000; - - //ƒŠƒgƒ‰ƒC‚ðs‚í‚È‚¢ƒXƒe[ƒ^ƒXƒR[ƒh - NotResendList: set of TSstpResult = [ - srOk, - srNoContent, - srBreak, - srBadRequest, - srRequestTimeout, - srRefuse, - srNotImplemented, - srServiceUnavailable, - srNotLocalIP, - srInBlackList - ]; - -procedure Register; - -implementation - -{ TDirectSstp } - -function TDirectSstp.CodeToStatus(const Code: integer): TSstpResult; -begin - case Code of - 200: Result := srOk; - 204: Result := srNoContent; - 210: Result := srBreak; - 400: Result := srBadRequest; - 408: Result := srRequestTimeout; - 409: Result := srConflict; - 420: Result := srRefuse; - 501: Result := srNotImplemented; - 503: Result := srServiceUnavailable; - 504: Result := srNotLocalIP; - 541: Result := srInBlackList; - else - Result := srUnknownError; - end; -end; - -function TDirectSstp.ConnectSstp(Source: TStrings): TSstpResult; -var Mes: TCopyDataStruct; - MesStr: String; - Dummy: DWORD; //SendMessageTimeout—p -begin - FlushLog; - Result := srUnknownError; - if FBusy then Exit; - FBusy := true; - FTimer.Enabled := false; - - if TargetHWnd <> 0 then begin - MesStr := Source.Text; - Mes.dwData := 9801; - Mes.cbData := Length(MesStr); - Mes.lpData := PChar(MesStr); - FDirectSstpResult := ''; - FSentLog.Text := MesStr; - //SendMessage(TargetHWnd, WM_COPYDATA, FWindowHandle, LPARAM(@Mes)); - SendMessageTimeout(TargetHWnd, WM_COPYDATA, FWindowHandle, LPARAM(@Mes), - SMTO_ABORTIFHUNG or SMTO_NORMAL, TimeOut, Dummy); - FRecvLog.Text := FDirectSstpResult; - if FRecvLog.Count > 0 then - FStatusCode := ExtractCode(FRecvLog[0]) - else - FStatusCode := UnknownError; - Result := CodeToStatus(FStatusCode); - end; - - FTimer.Enabled := not FSleep; - if Assigned(FOnAfterConnection) then FOnAfterConnection(Self); - FBusy := false; -end; - -constructor TDirectSstp.Create; -begin - inherited; - TimeOut := 2000; - FInterval := 5000; - SstpSender := 'My Program'; - FSentLog := TStringList.Create; - FRecvLog := TStringList.Create; - FSendCue := TList.Create; - FTimer := TTimer.Create(Self); - FTimer.OnTimer := ResendTimerEvent; - FWindowHandle := AllocateHWnd(WndProc); -end; - -destructor TDirectSstp.Destroy; -var i: integer; -begin - inherited; - FSentLog.Free; - FRecvLog.Free; - for i := FSendCue.Count-1 downto 0 do - TSendScript(FSendCue[i]).Free; - FSendCue.Free; - DeallocateHWnd(FWindowHandle); -end; - -function TDirectSstp.ExtractCode(const CodeStr: String): integer; -var i, l: integer; - s, p: String; -begin - if CodeStr = '' then begin - Result := UnknownError; - Exit; - end; - i := 1; - l := length(CodeStr); - while (CodeStr[i] <> ' ') and (i<=l) do begin - p := p + CodeStr[i]; - Inc(i); - end; - Inc(i); - while (CodeStr[i] in ['0'..'9']) and (i<=l) do begin - s := s + CodeStr[i]; - Inc(i); - end; - try - Result := StrToInt(s); - except - on EConvertError do Result := UnknownError; - end; -end; - -procedure TDirectSstp.FlushLog; -begin - if FSentLog <> nil then FSentLog.Clear; - if FRecvLog <> nil then FRecvLog.Clear; - FRecvLogString := ''; -end; - -function TDirectSstp.GetLastStatus: TSstpResult; -begin - Result := CodeToStatus(FStatusCode); -end; - - -function TDirectSstp.GetRecvLog: String; -begin - Result := FRecvLog.Text; -end; - -function TDirectSstp.GetSentLog: String; -begin - Result := FSentLog.Text; -end; - -procedure TDirectSstp.Loaded; -begin - inherited; - FTimer.Interval := FInterval; - FTimer.Enabled := not FSleep; - if Assigned(FOnResendCountChange) then FOnResendCountChange(Self); -end; - -procedure TDirectSstp.ResendTimerEvent(Sender: TObject); -var Scr: TSendScript; - Res: TSstpResult; -begin - if FSendCue.Count = 0 then Exit; - Scr := TSendScript(FSendCue[0]); - if Assigned(FOnResendTrying) then FOnResendTrying(Self, Scr.ID, Scr.Script); - Res := SstpSEND(Scr.Script, Scr.Option, Scr.Ghost); - if Res in NotResendList then begin - if Assigned(FOnResendEnd) then FOnResendEnd(Self, Scr.ID, Scr.Script); - FSendCue.Delete(0); - if Assigned(FOnResendCountChange) then FOnResendCountChange(Self); - Scr.Free; - end else begin - if Assigned(FOnResendResend) then FOnResendResend(Self, Scr.ID, Scr.Script); - end; -end; - -procedure TDirectSstp.SetInterval(const Value: integer); -begin - FInterval := Value; - FTimer.Interval := Value; -end; - -procedure TDirectSstp.SetOnResendResend(const Value: TSstpResendEvent); -begin - FOnResendResend := Value; -end; - -procedure TDirectSstp.SetOnResendEnd(const Value: TSstpResendEvent); -begin - FOnResendEnd := Value; -end; - -procedure TDirectSstp.SetOnResendTrying(const Value: TSstpResendEvent); -begin - FOnResendTrying := Value; -end; - -procedure TDirectSstp.SetSstpSender(const Value: String); -begin - FSStpSender := Value; -end; - -function TDirectSstp.SstpCOMMUNICATE(const Sentence: String; - const Port: integer): TSstpResult; -var Source: TStringList; -begin - Source := nil; - try - Source := TStringList.Create; - Source.Add('COMMUNICATE SSTP/1.2'); - Source.Add('Sender: ' + FSstpSender); - if Port <> 0 then Source.Add('Port: ' + IntToStr(Port)); - Source.Add('Sentence: ' + Sentence); - Source.Add('CharSet: Shift_JIS'); - Source.Add('HWnd: ' + IntToStr(FWindowHandle)); - ConnectSstp(Source); - finally - Source.Free; - end; - Result := LastStatus; -end; - -function TDirectSstp.SstpEXECUTE(const Command: String): String; -var S: String; - Source: TStringList; -begin - Source := nil; - try - Source := TStringList.Create; - Source.Add('EXECUTE SSTP/1.1'); - Source.Add('Sender: ' + FSstpSender); - Source.Add('Command: ' + Command); - Source.Add('CharSet: Shift_JIS'); - Source.Add('HWnd: ' + IntToStr(FWindowHandle)); - ConnectSstp(Source); - finally - Source.Free; - end; - if FRecvLog.Count > 1 then begin - s := FRecvLog[0]; - FRecvLog.Delete(0); - Result := FRecvLog.Text; - FRecvLog.Insert(0, s); - end else Result := ''; -end; - -function TDirectSstp.SstpExGetName: String; -begin - Result := SstpEXECUTE('getname'); - Result := StringReplace(Result, #13#10, '', [rfReplaceAll]); -end; - -function TDirectSstp.SstpGIVE(const Document: String): TSstpResult; -begin - Result := SstpGIVE1_1(Document, gtDocument); -end; - -function TDirectSstp.SstpGIVE1_1(const Data: String; - const DataType: TGiveType): TSstpResult; -var Source: TStringList; -begin - Source := nil; - try - Source := TStringList.Create; - Source.Add('GIVE SSTP/1.1'); - Source.Add('Sender: ' + FSstpSender); - Source.Add('CharSet: Shift_JIS'); - case DataType of - gtSongname: - Source.Add('Songname: ' + Data); - else - Source.Add('Document: ' + Data); - end; - Source.Add('HWnd: ' + IntToStr(FWindowHandle)); - ConnectSstp(Source); - finally - Source.Free; - end; - Result := LastStatus; -end; - -function TDirectSstp.SstpSEND(const Script: String; - const Option: TSstpSendOptions = []; - const Ghost: String = ''): TSstpResult; -var Source: TStringList; -begin - Source := nil; - try - Source := TStringList.Create; - Source.Text := Script; - Result := SstpSEND(Source, Option, 0, Ghost); - finally - Source.Free; - end; -end; - -function TDirectSstp.SstpSEND(const Script: TStrings; - const Option: TSstpSendOptions; - const Handle: HWND; - const Ghost: String): TSstpResult; -var Opt: String; - i: integer; - Source: TStringList; -begin - if soNoTranslate in Option then begin - Opt := 'notranslate'; - end; - if soNoDescript in Option then begin - if Opt <> '' then Opt := Opt + ','; - Opt := Opt + 'nodescript'; - end; - Source := nil; - try - Source := TStringList.Create; - Source.Add('SEND SSTP/1.4'); - Source.Add('Sender: ' + FSstpSender); - Source.Add('Charset: Shift_JIS'); - if Ghost <> '' then Source.Add('IfGhost: '+Ghost); - for i := 0 to Script.Count -1 do begin - if i = 0 then begin - Source.Add('Script: ' + Script[i]); - end else begin - Source.Add('Entry: ' + Script[i]); - end; - end; - Source.Add('Option: ' + Opt); - if Handle <> 0 then - Source.Add('HWnd: ' + IntToStr(Handle)) - else - Source.Add('HWnd: ' + IntToStr(FWindowHandle)); - Source.Add(''); //‹ós‚ªI—¹‚ðŽ¦‚· - ConnectSstp(Source); - finally - Source.Free; - end; - Result := LastStatus; -end; - -function TDirectSstp.SstpSENDCue(const Script: String; - const HighPriority: boolean; const Option: TSstpSendOptions; - const Ghost: String): integer; -var NewScript: TSendScript; -begin - Inc(FNextCueID); - NewScript := TSendScript.Create(Script, Option, Ghost, FNextCueID); - if HighPriority then begin - FSendCue.Insert(0, NewScript); - ResendTimerEvent(Self); - end else FSendCue.Add(NewScript); - if Assigned(FOnResendCountChange) then FOnResendCountChange(Self); - Result := FNextCueID; -end; - -function TDirectSstp.GetCueCount: integer; -begin - Result := FSendCue.Count; -end; - -procedure TDirectSstp.SetOnResendCountChange(const Value: TNotifyEvent); -begin - FOnResendCountChange := Value; -end; - -procedure TDirectSstp.SetSleep(const Value: boolean); -begin - FSleep := Value; - FTimer.Enabled := false; //‚¢‚Á‚½‚ñƒ^ƒCƒ}[‚ð”jŠü‚·‚é - FTimer.Enabled := not Value; -end; - -procedure TDirectSstp.SetOnAfterConnection(const Value: TNotifyEvent); -begin - FOnAfterConnection := Value; -end; - -procedure TDirectSstp.ClearCue; -var i: integer; -begin - for i := FSendCue.Count-1 downto 0 do - TSendScript(FSendCue[i]).Free; - FSendCue.Clear; - if Assigned(FOnResendCountChange) then FOnResendCountChange(Self); -end; - -function TDirectSstp.SstpExGetCookie(const Key: String): String; -begin - Result := SstpEXECUTE('GetCookie[' + Key + ']'); - Result := StringReplace(Result, #13#10, '', [rfReplaceAll]); -end; - -function TDirectSstp.SstpExSetCookie(const Key, Value: String): TSstpResult; -begin - SstpEXECUTE('SetCookie[' + - StringReplace(Key, #13#10, '', [rfReplaceAll]) + - ',' + - StringReplace(Value, #13#10, '', [rfReplaceAll]) - + ']'); - Result := GetLastStatus; -end; - -function TDirectSstp.SstpExGetVersion: String; -begin - Result := SstpEXECUTE('getversion'); - Result := StringReplace(Result, #13#10, '', [rfReplaceAll]); -end; - -function TDirectSstp.SstpExQuiet(const Quiet: boolean): TSstpResult; -begin - if Quiet then - SstpEXECUTE('Quiet') - else - SstpEXECUTE('Restore'); - Result := GetLastStatus; -end; - -procedure TDirectSstp.WndProc(var Msg: TMessage); -var Dat: TWMCopyData; -begin - if Msg.Msg = WM_COPYDATA then begin - Dat := TWMCopyData(Msg); - FDirectSstpResult := PChar(Dat.CopyDataStruct^.lpData); - end else begin - Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam, Msg.lParam); - end; -end; - -procedure TDirectSstp.SetTargetHWnd(const Value: THandle); -begin - FTargetHWnd := Value; -end; - -procedure TDirectSstp.SetTimeOut(const Value: integer); -begin - FTimeOut := Value; -end; - -{ TSendScript } - -constructor TSendScript.Create(const AScript: String; - const AOption: TSstpSendOptions; const AGhost: String; const ID: integer); -begin - FScript := AScript; - FOption := AOption; - FGhost := AGhost; - FID := ID; -end; - -procedure TSendScript.SetGhost(const Value: String); -begin - FGhost := Value; -end; - -procedure TSendScript.SetOption(const Value: TSstpSendOptions); -begin - FOption := Value; -end; - -procedure TSendScript.SetScript(const Value: String); -begin - FScript := Value; -end; - -//------------------------------------- - -procedure Register; -begin - RegisterComponents('Miscellaneous', [TDirectSstp]); -end; - -end. - - - - - - - diff --git a/sakurasuite/IdSLPP20.dcr b/sakurasuite/IdSLPP20.dcr deleted file mode 100644 index 6d15d2a9ce7ffa4e83ff4e14d2f18b0deb89d766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmZwHJ&sc`5Ww+a7m=jO(os%Hi8#R^(I8PE!2zbE;SO_@DI(4>HD{pk5w^&tp?Lgl zzih~|c7AW1v7h}utS2I(SeA+ARr&r(hDXB0x0*ON7A_WSABakRG5q{DX21g)KXkx-;ilSFXAW>-Z)>MfG zM<7vX^R`Wi21g)KX!DV{5)F<(qR{5!3MCpGfkdIrN0~}AI0A`6n~%AaXmA7)g*IM+ zH6!}6NM(B0)@d5NEF(9ZKgznBakSx`AS`h21g)KX!CWmNQA)= zNEF)K3aLbcBakSxxlKxm21g)KXk!aSQ=-8UNEDhB_g|tgI0A`Y+uT~JM1v!cD73ll zOo;|ZAW>*@OS%#bjzFT&=5`Gw8XSQ{q0OzFN;EhEi9(y(yp(8g1XAw*EOKC6Fdtuy z@#`NKTA+^a%pwoV^X0I8wk(JJeoxP8-y1zcz9(lL$$r>An_tKGd7g}aoTqn;GNxkS zdEL46II~YreuT?mtolrT9dSBrH-}j^my@2#vwl0T05cRTWQ zJm%$i?AOB-=lpRLp=0Lh=<~>jQFs%w<~gV5FXbw~UZ}{rZXf;6^^jiIz0UX3m}h%C Z%R0*pJ^y2r+yC-ciS^I2KD4Ld;V%sb&i()Z diff --git a/sakurasuite/IdSLPP20.pas b/sakurasuite/IdSLPP20.pas deleted file mode 100644 index 869a0b6..0000000 --- a/sakurasuite/IdSLPP20.pas +++ /dev/null @@ -1,307 +0,0 @@ -{*******************************************************} -{ IdSLPP20 - Indy Client for SLPP Connection } -{ } -{ Copyright (c) 2002-2003 naruto/CANO-Lab } -{*******************************************************} - -unit IdSLPP20; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - IdTCPClient, IdGlobal, IdException; - -const - SLPP_PORT = 9871; - SLPP_HOST = 'bottle.mikage.to'; - -type - TIdSLPPEventType = (etConnectOk, etScript, etMemberCount, etChannelCount, - etChannelList, etUnicast, etForceBroadcast, etCloseChannel, - etForceBroadcastInformation, etBroadcastInformation); - TIdSLPPEvent = procedure (Sender: TObject; - EventType: TIdSlppEventType; const Param: String) of Object; - - TIdSLPP20 = class; - - TIdSLPP20ReadThread = class(TThread) - private - protected - FClient: TIdSLPP20; - FRecvData: TStringList; - FEvent: TIdSLPPEventType; // SLPP Command - FParam: String; // SLPP Command Parameter - FReceivedLog: TStringList; - function Parse: boolean; - procedure Execute; override; - public - constructor Create(AClient: TIdSLPP20); reintroduce; - property Client: TIdSLPP20 read FClient; - end; - - TIdSLPP20 = class(TIdTCPClient) - private - FSLPPThread: TIdSLPP20ReadThread; - FDebugMode: boolean; - FProxyMode: boolean; - FLUID: String; - FOnSlppEvent: TIdSlppEvent; - FOnConnect: TNotifyEvent; - FOnDisconnect: TNotifyEvent; - FLastReadTime: Int64; - FTimeout: Integer; - FOnConnectFailed: TNotifyEvent; - procedure SetDebugMode(const Value: boolean); - procedure SetLUID(const Value: String); - procedure SetOnSlppEvent(const Value: TIdSlppEvent); - procedure SetProxyMode(const Value: boolean); - procedure SetOnConnect(const Value: TNotifyEvent); - procedure SetOnDisconnect(const Value: TNotifyEvent); - function GetLastReadTimeInterval: integer; - procedure SetLastReadTime(const Value: Int64); - procedure SetOnConnectFailed(const Value: TNotifyEvent); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure Connect(const ATimeout: Integer = IdTimeoutDefault); override; - procedure ConnectServer(const ATimeout: Integer = IdTimeoutDefault); - procedure Disconnect; override; - procedure DoOnSlppEvent; - procedure DoOnConnect; - procedure DoOnConnectFailed; - property SLPP20ReadThread: TIdSLPP20ReadThread read FSLPPThread; - property LastReadTime: Int64 read FLastReadTime write SetLastReadTime; - property LastReadTimeInterval: integer read GetLastReadTimeInterval; - published - property LUID: String read FLUID write SetLUID; - property Port default SLPP_PORT; - property DebugMode: boolean read FDebugMode write SetDebugMode; - property ProxyMode: boolean read FProxyMode write SetProxyMode; - property OnConnect: TNotifyEvent read FOnConnect write SetOnConnect; - property OnConnectFailed: TNotifyEvent read FOnConnectFailed write SetOnConnectFailed; - property OnDisconnect: TNotifyEvent read FOnDisconnect write SetOnDisconnect; - property OnSLPPEvent: TIdSlppEvent read FOnSlppEvent write SetOnSlppEvent; - {ProxyMode = true‚Ì‚Æ‚«‚́AHost, Port‚ɃvƒƒLƒV–¼‚ð} - end; - - EIdSlppError = class(EIdException); - EIdSlppClientConnectError = class(EIdSlppError); - -procedure Register; - -implementation - -procedure Register; -begin - RegisterComponents('Indy Clients', [TIdSLPP20]); -end; - -{ TIdSLPP20 } - -procedure TIdSLPP20.Connect(const ATimeout: Integer); -begin - inherited Connect(ATimeout); -end; - -procedure TIdSLPP20.ConnectServer; -begin - try - FTimeout := ATimeout; - FSLPPThread := TIdSLPP20ReadThread.Create(self); - except on E: EIdSocketError do - raise EIdSlppClientConnectError.Create('Connection Failed'); - end; -end; - -constructor TIdSLPP20.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - Port := SLPP_PORT; - Host := SLPP_HOST; -end; - -destructor TIdSLPP20.Destroy; -begin - inherited; -end; - -procedure TIdSLPP20.Disconnect; -begin - inherited Disconnect; - if Assigned(FSLPPThread) then begin - FSLPPThread.Terminate; - // FSLPPThread.WaitFor; - FSLPPThread := nil; - end; - if Assigned(FOnDisconnect) then begin - OnDisconnect(self); - end; -end; - -procedure TIdSLPP20.DoOnConnect; -begin - if Assigned(FOnConnect) then - FOnConnect(self); -end; - -procedure TIdSLPP20.DoOnConnectFailed; -begin - if Assigned(FOnConnectFailed) then - FOnConnectFailed(self); -end; - -procedure TIdSLPP20.DoOnSlppEvent; -begin - try - FOnSlppEvent(self, FSLPPThread.FEvent, FSLPPThread.FParam); - except - on E: Exception do - ShowMessage('Exception occured in OnSlppEvent: '#13#10 + E.Message); - end; -end; - -function TIdSLPP20.GetLastReadTimeInterval: integer; -begin - Result := 0; - if Connected then Result := GetTickCount - FLastReadTime; -end; - -procedure TIdSLPP20.SetDebugMode(const Value: boolean); -begin - FDebugMode := Value; -end; - -procedure TIdSLPP20.SetLastReadTime(const Value: Int64); -begin - FLastReadTime := Value; -end; - -procedure TIdSLPP20.SetLUID(const Value: String); -begin - FLUID := Value; -end; - -procedure TIdSLPP20.SetOnConnect(const Value: TNotifyEvent); -begin - FOnConnect := Value; -end; - -procedure TIdSLPP20.SetOnConnectFailed(const Value: TNotifyEvent); -begin - FOnConnectFailed := Value; -end; - -procedure TIdSLPP20.SetOnDisconnect(const Value: TNotifyEvent); -begin - FOnDisconnect := Value; -end; - -procedure TIdSLPP20.SetOnSlppEvent(const Value: TIdSlppEvent); -begin - FOnSlppEvent := Value; -end; - -procedure TIdSLPP20.SetProxyMode(const Value: boolean); -begin - FProxyMode := Value; -end; - -{ TIdSLPP20ReadThread } - -constructor TIdSLPP20ReadThread.Create(AClient: TIdSLPP20); -begin - inherited Create(true); - FClient := AClient; - FreeOnTerminate := true; - Resume; -end; - -procedure TIdSLPP20ReadThread.Execute; -var Line: String; -begin - try - FClient.Connect(FClient.FTimeout); - if Assigned(FClient.OnConnect) then begin - Synchronize(FClient.DoOnConnect); - end; - except - Synchronize(FClient.DoOnConnectFailed); - Exit; - end; - - FRecvData := TStringList.Create; - FReceivedLog := TStringList.Create; - if FClient.ProxyMode then begin - FClient.Writeln('POST http://bottle.mikage.to:9871/ HTTP/1.0'); - FClient.Writeln('Content-Length: ' + IntToStr(Length(FClient.LUID))); - FClient.Writeln('Connection: close'); - FClient.Writeln; - FClient.Writeln(FClient.LUID); - end else begin - FClient.WriteLn('POST / HTTP/1.0'); - FClient.WriteLn; - FClient.WriteLn(FClient.LUID); - end; - while not Terminated do begin - try - FClient.CheckForDisconnect; - Line := FClient.ReadLn(EOL); - if FClient.DebugMode then begin - FReceivedLog.Add(Line); - FReceivedLog.SaveToFile(ExtractFilePath(Application.ExeName)+'slpp20_debug.log'); - end; - if not FClient.ReadLnTimedOut then FClient.LastReadTime := getTickCount; - if Length(Line) = 0 then begin - if FRecvData.Count > 0 then begin - while Parse do begin - Synchronize(FClient.DoOnSlppEvent); - end; - FRecvData.Clear; - end; - end else begin - FRecvData.Add(Line); - end; - except - on EIdException do begin - Synchronize(self.Terminate); - end; - end; - end; - FreeAndNil(FReceivedLog); - FreeAndNil(FRecvData); -end; - -function TIdSLPP20ReadThread.Parse: boolean; -var - command: String; -begin - command := FRecvData[0]; - FRecvData.Delete(0); - FParam := FRecvData.Text; - - Result := true; - if command = 'broadcastMessage' then begin - FEvent := etScript; - end else if command = 'allUsers' then begin - FEvent := etMemberCount; - end else if command = 'channelUsers' then begin - FEvent := etChannelCount; - end else if command = 'channelList' then begin - FEvent := etChannelList; - end else if (command = 'HTTP/1.0 200 OK') or (command = 'HTTP/1.1 200 OK') then begin - FEvent := etConnectOk; - end else if command = 'forceBroadcastMessage' then begin - FEvent := etForceBroadcast; - end else if command = 'forceBroadcastInformation' then begin - FEvent := etForceBroadcastInformation; - end else if command = 'BroadcastInformation' then begin - FEvent := etBroadcastInformation; - end else if command = 'closeChannel' then begin - FEvent := etCloseChannel; - end else if command = 'unicastMessage' then begin - FEvent := etUnicast; - end else Result := false; -end; - -end. diff --git a/sakurasuite/Sakura.pas b/sakurasuite/Sakura.pas deleted file mode 100644 index f3ae3b0..0000000 --- a/sakurasuite/Sakura.pas +++ /dev/null @@ -1,51 +0,0 @@ -(******************************** - -Sakura API Const Unit -implemented by naruto/CANO-Lab - -********************************) - -unit Sakura; - -interface - -const - -(* - ˆÈ‰º‚̃f[ƒ^‚Í - phase "inverse" 46.60 - ƒhƒLƒ…ƒƒ“ƒgƒf[ƒ^‚ðŒ³‚Éì¬‚µ‚Ä‚¢‚Ü‚·B -*) - -{EXECUTE} -SA_EXECUTEREMAKEMENU = 0; -SA_EXECUTEREWRITEFMO = 1; - -{GET} -SA_GETHEADCOLLISIONRECTSAKURA = 128; -SA_GETFACECOLLISIONRECTSAKURA = 129; -SA_GETBUSTCOLLISIONRECTSAKURA = 130; -SA_GETCENTERPOINTSAKURA = 131; -SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA = 132; -SA_GETHEADCOLLISIONRECTKERO = 133; -SA_GETFACECOLLISIONRECTKERO = 134; -SA_GETBUSTCOLLISIONRECTKERO = 135; -SA_GETCENTERPOINTKERO = 136; -SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO = 137; -SA_GETPROCESSID = 138; -SA_GETSHAREDMEMORY = 139; -SA_GETGHOSTSTATE = 140; - -{NOTIFY} -SA_NOTIFYEVENT = 256; - -{Talking State} -GS_NONE = 0; //‘Ò‹@’† -GS_TALKING = 1; //‰½‚©’‚Á‚Ä‚¢‚é -GS_TIMECRITICALSESSION = 2; //ƒ^ƒCƒ€ƒNƒŠƒeƒBƒJƒ‹ƒZƒbƒVƒ‡ƒ“ - - -implementation - -end. - \ No newline at end of file diff --git a/sakurasuite/SakuraAPI.pas b/sakurasuite/SakuraAPI.pas deleted file mode 100644 index 5eb8d33..0000000 --- a/sakurasuite/SakuraAPI.pas +++ /dev/null @@ -1,202 +0,0 @@ -unit SakuraAPI; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - Sakura; - -type - TSakuraAPI = class(TComponent) - private - { Private éŒ¾ } - FMes: integer; - FTargetHWnd: THandle; - FOnRegisterAPI: TNotifyEvent; - procedure SetTargetHWnd(const Value: THandle); - procedure SetOnRegisterAPI(const Value: TNotifyEvent); - protected - { Protected éŒ¾ } - public - { Public éŒ¾ } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure Loaded; override; - // - function SendAPI(Mes: cardinal; wParam: integer; lParam: integer): integer; - function ExecuteRemakeMenu: integer; - function ExecuteRewriteFMO: integer; - function GetHeadCollisionRectSakura: TRect; - function GetFaceCollisionRectSakura: TRect; - function GetBustCollisionRectSakura: TRect; - function GetCenterPointSakura: TPoint; - function GetHeadCollisionRectKero: TRect; - function GetFaceCollisionRectKero: TRect; - function GetBustCollisionRectKero: TRect; - function GetCenterPointKero: TPoint; - function GetGhostState: integer; - function GetAbsoluteKinokoFieldCenterPointSakura: TPoint; - function GetAbsoluteKinokoFieldCenterPointKero: TPoint; - function GetProcessID: Cardinal; - function GetSharedMemory(const Slot: integer = -1): pointer; - function NotifyEvent: integer; - published - { Published éŒ¾ } - property WM_SAKURAAPI: integer read FMes; - property TargetHWnd: THandle read FTargetHWnd write SetTargetHWnd; - property OnRegisterAPI: TNotifyEvent read FOnRegisterAPI write SetOnRegisterAPI; - end; - -procedure Register; - -implementation - -procedure Register; -begin - RegisterComponents('Samples', [TSakuraAPI]); -end; - -{ TSakuraAPI } - -constructor TSakuraAPI.Create; -begin - inherited; -end; - -destructor TSakuraAPI.Destroy; -begin - inherited; - // -end; - -function TSakuraAPI.ExecuteRemakeMenu: integer; -begin - Result := SendAPI(SA_EXECUTEREMAKEMENU, 0, 0); -end; - -function TSakuraAPI.ExecuteRewriteFMO: integer; -begin - Result := SendAPI(SA_EXECUTEREWRITEFMO, 1, 0); -end; - -function TSakuraAPI.GetAbsoluteKinokoFieldCenterPointKero: TPoint; -begin - Result.X := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO, 137, 0); - Result.Y := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO, 137, 1); -end; - -function TSakuraAPI.GetAbsoluteKinokoFieldCenterPointSakura: TPoint; -begin - Result.X := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA, 132, 0); - Result.Y := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA, 132, 1); -end; - -function TSakuraAPI.GetBustCollisionRectKero: TRect; -begin - Result.Left := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 0); - Result.Top := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 1); - Result.Right := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 2); - Result.Bottom := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 3); -end; - -function TSakuraAPI.GetBustCollisionRectSakura: TRect; -begin - Result.Left := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 0); - Result.Top := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 1); - Result.Right := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 2); - Result.Bottom := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 3); -end; - -function TSakuraAPI.GetCenterPointKero: TPoint; -begin - Result.X := SendAPI(SA_GETCENTERPOINTKERO, 136, 0); - Result.Y := SendAPI(SA_GETCENTERPOINTKERO, 136, 1); -end; - -function TSakuraAPI.GetCenterPointSakura: TPoint; -begin - Result.X := SendAPI(SA_GETCENTERPOINTSAKURA, 131, 0); - Result.Y := SendAPI(SA_GETCENTERPOINTSAKURA, 131, 1); -end; - -function TSakuraAPI.GetFaceCollisionRectKero: TRect; -begin - Result.Left := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 0); - Result.Top := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 1); - Result.Right := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 2); - Result.Bottom := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 3); -end; - -function TSakuraAPI.GetFaceCollisionRectSakura: TRect; -begin - Result.Left := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 0); - Result.Top := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 1); - Result.Right := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 2); - Result.Bottom := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 3); -end; - -function TSakuraAPI.GetHeadCollisionRectKero: TRect; -begin - Result.Left := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 0); - Result.Top := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 1); - Result.Right := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 2); - Result.Bottom := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 3); -end; - -function TSakuraAPI.GetHeadCollisionRectSakura: TRect; -begin - Result.Left := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 0); - Result.Top := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 1); - Result.Right := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 2); - Result.Bottom := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 3); -end; - -function TSakuraAPI.GetGhostState: integer; -begin - Result := SendAPI(SA_GETGHOSTSTATE, 140, 0); -end; - -function TSakuraAPI.GetProcessID: Cardinal; -begin - Result := SendAPI(SA_GETPROCESSID, 138, 0); -end; - -function TSakuraAPI.GetSharedMemory(const Slot: integer = -1): pointer; -begin - Result := pointer(SendAPI(SA_GETSHAREDMEMORY, 139, Slot)); -end; - -function TSakuraAPI.SendAPI(Mes: cardinal; wParam: integer; - lParam: integer): integer; -begin - Result := SendMessage(TargetHWnd, Mes, wParam, lParam); -end; - -procedure TSakuraAPI.SetTargetHWnd(const Value: THandle); -begin - FTargetHWnd := Value; -end; - -function TSakuraAPI.NotifyEvent: integer; -begin - Result := SendAPI(SA_NOTIFYEVENT, 256, 0); -end; - -procedure TSakuraAPI.SetOnRegisterAPI(const Value: TNotifyEvent); -begin - FOnRegisterAPI := Value; -end; - -procedure TSakuraAPI.Loaded; -begin - inherited; - if csDesigning in ComponentState then Exit; - FMes := RegisterWindowMessage('Sakura'); - if FMes = 0 then - raise Exception.Create('RegisterWindowMessage‚ÉŽ¸”s‚µ‚Ü‚µ‚½') - else - if Assigned(FOnRegisterAPI) then - FOnRegisterAPI(Self); -end; - -end. diff --git a/sakurasuite/SakuraScriptFountain.dcr b/sakurasuite/SakuraScriptFountain.dcr deleted file mode 100644 index 1b4ae59ad81b86f03f5853ebd69af8d5bcdf8695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1744 zcmZ|Py^hpC48U=NR*3TGC|y$CBlv`bKu8DTqj$+;_)%OSp2OWqJOhQ_0NT~wD*Pw2 zUx&EK{?-%6nPietL_`$JGSPj|zC9CpOJ-S~$`|=8H}YP-$|vGyc};vLAIZOw4`grY z-H^FGjBs`JVsjkq6`hv{PvrTUwx`FV|HcsEClNF7Pgkl+>Q~91pFg;1gM$N_D71(P z6m-lHNEBMc1quT@9!M1Wa9t%D9DzikMd(T@430pe(A=azVQ>Tzg%;r_tuQzOi9(AB zw<(ITIRc47 >r4URyf&~w_RM1v!cDD-?Ju0(?)kSO$gT%kmRBakTce3Yp~gCmeA z^nA>vM1v!cDD?UYtd(eR1QLaoVE!SBF>}Y*5`~sffx_SjBnmxWn<>%Y2qX$UU#Tn6 z;0PoNJzqB$i7+?skNafA%X%)!p$(0}FYA}R>^Nr`#Sikb+wI1+N0N4$ z?5N*t{*#|2>);RS*V9jb=W)g}xM-(}M>=Cp 0 then - Result := toSynchronized - else if (FElementIndex or InScope1) > 0 then - Result := toScope1 - else - Result := toScope0; -end; - -procedure TSakuraScriptFountainParser.InitMethodTable; -begin - inherited; - FMethodTable['\'] := TagProc; - FMethodTable['%'] := MetaProc; -end; - - -function TSakuraScriptFountainParser.IsScope0ChangeTag( - const Tag: String): boolean; -begin - Result := false; - if (Self.FFountain as TSakuraScriptFountain).ChangeScopeBy01 then - if Tag = '\0' then - Result := true; - if (Self.FFountain as TSakuraScriptFountain).ChangeScopeByHU then - if Tag = '\h' then - Result := true; -end; - -function TSakuraScriptFountainParser.IsScope1ChangeTag( - const Tag: String): boolean; -begin - Result := false; - if (Self.FFountain as TSakuraScriptFountain).ChangeScopeBy01 then - if Tag = '\1' then - Result := true; - if (Self.FFountain as TSakuraScriptFountain).ChangeScopeByHU then - if Tag = '\u' then - Result := true; -end; - -procedure TSakuraScriptFountainParser.MetaProc; -var i, Le: integer; -begin - Inc(FP); - for i := 0 to SsParser.MetaPattern.Count-1 do - begin - Le := SsParser.MatchP(FP, PChar(SsParser.MetaPattern[i])); - if Le > 0 then - begin - FToken := toMetaWord; - Inc(FP, Le); - Exit; // ‚ß‚Å‚½‚­ƒƒ^•¶Žš‚Æ‚µ‚ĉðÍŠ®—¹ - end else - end; - SymbolProc; // ’Pƒ‚É•¶Žš‚Æ‚µ‚Ĉµ‚¤ -end; - -function TSakuraScriptFountainParser.NextToken: Char; -begin - // ‚±‚̃Nƒ‰ƒX‚̃Lƒ‚B - // toInteger‚â‚çtoDBSymbol‚â‚ç‚̃g[ƒNƒ“‚Í•s—v‚ŁA - // ‘ã‚í‚è‚É‚»‚̃ZƒŠƒt‚ª‚Ç‚¿‚ç‚̃XƒR[ƒv‚È‚Ì‚©‚ª•K—v‚Ȃ̂ŁA - // ƒg[ƒNƒ“‚ðã‘‚«‚·‚é - inherited NextToken; - if FToken = toTag then - begin - if IsScope1ChangeTag(TokenString) then - FElementIndex := FElementIndex or InScope1 - else if IsScope0ChangeTag(TokenString) then - FElementIndex := FElementIndex and not InScope1 - else if (FFountain as TSakuraScriptFountain).ProcessSync and - (TokenString = '\_s') then - FElementIndex := FElementIndex xor InSynchronized; - end else - begin - if FToken in [toSymbol..toFloat, toAnk, toDBSymbol..toKana, toHex] then - begin - if (FElementIndex and InSynchronized) > 0 then - FToken := toSynchronized - else if (FElementIndex and InScope1) > 0 then - FToken := toScope1 - else - FToken := toScope0; - end; - end; - Result := FToken; -end; - -procedure TSakuraScriptFountainParser.SymbolProc; -// '\'‚Æ'%'ˆÈŠO‚͍‹‰õ‚É“Ç‚Ý”ò‚΂·B—v‚ç‚È‚¢B -// ƒ_ƒuƒ‹ƒoƒCƒg•¶Žš‚àƒVƒ“ƒOƒ‹ƒoƒCƒg•¶Žš‚à•¹‚¹‚Ä’P‚È‚éƒVƒ“ƒ{ƒ‹‚Æ‚µ‚Ĉµ‚¤B -begin - FToken := toSymbol; - if not (FP^ in [#0, #9, #10, #13, '\', '%']) then - if FP^ in LeadBytes then - Inc(FP, 2) - else - Inc(FP); -end; - -function TSakuraScriptFountainParser.SsParser: TSsParser; -begin - Result := (FFountain as TSakuraScriptFountain).SakuraScriptParser; - if Result = nil then raise Exception.Create('SakuraScriptParser property is nil'); -end; - -procedure TSakuraScriptFountainParser.TagProc; -var i, Le: integer; - IsErr: boolean; - Pat: String; -begin - Inc(FP); - if (FP^ in [#0, #13, #10]) then - begin - FToken := toTagError; - Exit; - end else if (FP^ = '\') or (FP^ = '%') then // '\\', '\%'Œ`Ž®‚̃GƒXƒP[ƒv - begin - Inc(FP); - SymbolProc; - end else - begin - for i := 0 to SsParser.TagPattern.Count-1 do - begin - Pat := SsParser.TagPattern[i]; - if Length(Pat) < 2 then Continue; - IsErr := Pat[1] = '!'; - Le := SsParser.MatchP(FP, @Pat[2]); - if Le > 0 then - begin - Inc(FP, Le); - if IsErr then - FToken := toTagError - else - FToken := toTag; - Exit; // ‚ß‚Å‚½‚­ƒpƒ^[ƒ“ƒ}ƒbƒ`¬Œ÷‚̏ꍇ - end; - end; - // ˆÈ‰º‚̓pƒ^[ƒ“Žæ“¾Ž¸”s‚̏ꍇ - FToken := toTagError; - if FP^ in LeadBytes then - Inc(FP, 2) - else - Inc(FP); - end; -end; - -function TSakuraScriptFountainParser.TokenToFountainColor: TFountainColor; -begin - with TSakuraScriptFountain(FFountain) do - case FToken of - toScope0: - Result := FScope0Color; - toScope1: - Result := FScope1Color; - toTag: - Result := FTagColor; - toTagError: - Result := FTagErrorColor; - toMetaWord: - Result := FMetaWordColor; - toSynchronized: - Result := FSynchronizedColor; - else - Result := nil; - end; -end; - -procedure Register; -begin - RegisterComponents('TEditor', [TSakuraScriptFountain]); -end; - -end. diff --git a/sakurasuite/SakuraSeeker.dcr b/sakurasuite/SakuraSeeker.dcr deleted file mode 100644 index e343d92dca434994305fdf69dcc03241429c8f18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1728 zcma*nF>=*F41i(5FhChPN|hXeDkBQ2bP04RRB{a6Bq|urp_(&Ls7segPx1J@a^}4R z2C)5EdV1cqcfDf~5yjy!NFQxqUW&Y@ayUGfPjV$6h)LW`I{L1KTzg%%SYQxx0o2qX$ULsKOh z9DzikXV|7hgCmeA^h}8>(clOq3O&;mN;EhEi9*j*rV zG&ll@LQ63I5XClf$F?U5EujL1!4XIldS06;(clOq3O%pXm1uAT5`~`E%}pWQi3zDgU!h)9L4W>t*jp z_MF?EmU)=D=1E;{@7A`J_jG^C4OZ(6VB zRJV7qPxtC)6<+;!eScl6lap@fYMyV->z4az?l~Sw!Wi5<3pEmgY`d|1% B1UUcz diff --git a/sakurasuite/SakuraSeeker.pas b/sakurasuite/SakuraSeeker.pas deleted file mode 100644 index 33014d3..0000000 --- a/sakurasuite/SakuraSeeker.pas +++ /dev/null @@ -1,473 +0,0 @@ -{********************************************************} -{ SakuraSeeker Component - Listups Existing SSTP Servers } -{ } -{ Copyright (c) 2001-2003 naruto/CANO-Lab } -{********************************************************} - -unit SakuraSeeker; - -interface - -uses - Windows, SysUtils, Classes, Contnrs; - -type - ESakuraSeekerError = class(Exception); - - TSakuraSeeker = class; - - TSakuraSeekerGetMutexNameEvent = procedure (Sender: TObject; - var Name: String) of object; - - TSakuraProcess = class(TObject) - private - FHash: TStringList; - FProcessID: String; - FFMOName: String; - FOwner: TSakuraSeeker; - procedure SetProcessID(const Value: String); - function GetHWnd: THandle; - function GetName: String; - function GetData(Key: String): String; - function GetKeroName: String; - function GetSetName: String; - procedure SetFMOName(const Value: String); - function GetDataAt(Index: integer): String; - function GetCount: integer; - function GetKeyAt(Index: integer): String; - protected - procedure AppendData(const Key, Value: String); - public - constructor Create(AOwner: TSakuraSeeker); - destructor Destroy; override; - property ProcessID: String read FProcessID write SetProcessID; - property FMOName: String read FFMOName write SetFMOName; - property HWnd: THandle read GetHWnd; - property Name: String read GetName; - property KeroName: String read GetKeroName; - property SetName: String read GetSetName; - property Data[Key: String]: String read GetData; - property Count: integer read GetCount; - property DataAt[Index: integer]: String read GetDataAt; - property KeyAt[Index: integer]: String read GetKeyAt; - end; - - TSakuraSeeker = class(TComponent) - private - { Private éŒ¾ } - FList: TObjectList; - FAutoDetect: boolean; - FOnAfterDetection: TNotifyEvent; - FLastSeekResult: String; //‘O‰ñ‚̎擾Œ‹‰ÊB”äŠr—p - FSourceResult: String; //¡‰ñ‚̎擾Œ‹‰ÊB”äŠr—p - FOnDetectResultChanged: TNotifyEvent; - FFileMappingTarget: TStrings; - FOnGetMutexName: TSakuraSeekerGetMutexNameEvent; - FMutexPool: TStringList; - function GetProcess(Index: integer): TSakuraProcess; - procedure SetAutoDetect(const Value: boolean); - function GetProcessByName(Name: String): TSakuraProcess; - function GetProcessByID(ID: String): TSakuraProcess; - function GetCount: integer; - procedure SetOnAfterDetection(const Value: TNotifyEvent); - procedure SetOnDetectResultChanged(const Value: TNotifyEvent); - procedure SetFileMappingTarget(const Value: TStrings); - function GetProcessBySetName(Name: String): TSakuraProcess; - procedure SetOnGetMutexName( - const Value: TSakuraSeekerGetMutexNameEvent); - protected - { Protected éŒ¾ } - procedure Loaded; override; - procedure ClearList; - procedure BeginDetectOne(const Target: String); - function GetMutexName(const Target: String): String; - function GetMutex(const Name: String): THandle; - public - { Public éŒ¾ } - procedure BeginDetect; - property Count: integer read GetCount; - property Process[Index: integer]: TSakuraProcess read GetProcess; default; - property ProcessByName[Name: String]: TSakuraProcess read GetProcessByName; - property ProcessBySetName[Name: String]: TSakuraProcess read GetProcessBySetName; - property ProcessByID[ID: String]: TSakuraProcess read GetProcessByID; - function KillFMO(const TargetFMOName, TargetID: String): boolean; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - published - { Published éŒ¾ } - property AutoDetect: boolean read FAutoDetect write SetAutoDetect default true; - property OnAfterDetection: TNotifyEvent read FOnAfterDetection write SetOnAfterDetection; - property OnDetectResultChanged: TNotifyEvent read FOnDetectResultChanged write SetOnDetectResultChanged; - property FileMappingTarget: TStrings read FFileMappingTarget write SetFileMappingTarget; - property OnGetMutexName: TSakuraSeekerGetMutexNameEvent read FOnGetMutexName write SetOnGetMutexName; - end; - -procedure Register; - -implementation - -procedure Register; -begin - RegisterComponents('Samples', [TSakuraSeeker]); -end; - -{ TSakuraProcess } - -procedure TSakuraProcess.AppendData(const Key, Value: String); -begin - FHash.Values[Key] := Value; -end; - -constructor TSakuraProcess.Create(AOwner: TSakuraSeeker); -begin - FHash := TStringList.Create; - FOwner := AOwner; -end; - -destructor TSakuraProcess.Destroy; -begin - inherited; - FHash.Free; -end; - -function TSakuraProcess.GetCount: integer; -begin - Result := FHash.Count; -end; - -function TSakuraProcess.GetData(Key: String): String; -begin - Result := FHash.Values[Key]; -end; - -function TSakuraProcess.GetDataAt(Index: integer): String; -begin - if Index >= 0 then - Result := Copy(FHash[Index], Length(FHash.Names[Index]) + 2, High(integer)) - else - Result := ''; -end; - -function TSakuraProcess.GetHWnd: THandle; -begin - Result := StrToIntDef(GetData('hwnd'), 0); -end; - -function TSakuraProcess.GetKeroName: String; -begin - Result := GetData('keroname'); -end; - -function TSakuraProcess.GetKeyAt(Index: integer): String; -begin - Result := FHash.Names[Index]; -end; - -function TSakuraProcess.GetName: String; -begin - Result := GetData('name'); -end; - - -function TSakuraProcess.GetSetName: String; -begin - Result := GetName + ',' + GetKeroName; -end; - -procedure TSakuraProcess.SetFMOName(const Value: String); -begin - FFMOName := Value; -end; - -procedure TSakuraProcess.SetProcessID(const Value: String); -begin - FProcessID := Value; -end; - -{ TSakuraSeeker } - -procedure TSakuraSeeker.BeginDetect; -var i: integer; -begin - if [csDesigning, csLoading] * ComponentState <> [] then Exit; - ClearList; - - FSourceResult := ''; - for i := 0 to FFileMappingTarget.Count-1 do begin - BeginDetectOne(FFileMappingTarget[i]); //1‚‚ÌFile-mapping Object‚ðŽæ“¾ - end; - - if Assigned(OnDetectResultChanged) and (FLastSeekResult <> FSourceResult) then begin - FLastSeekResult := FSourceResult; - OnDetectResultChanged(Self); - end else begin - FLastSeekResult := FSourceResult; - end; - - if Assigned(OnAfterDetection) then OnAfterDetection(Self); -end; - -procedure TSakuraSeeker.BeginDetectOne(const Target: String); -var MappingHandle, Mutex: THandle; - P, PSaved: pointer; - SourceStr, ID, Entry, Data: String; - Size: integer; - Strs: TStringList; - Pro: TSakuraProcess; - i, j: integer; -begin - //ƒtƒ@ƒCƒ‹ƒ}ƒbƒsƒ“ƒOƒIƒuƒWƒFƒNƒg‚̎擾 - PSaved := nil; - Strs := nil; - MappingHandle := 0; - - Mutex := GetMutex(GetMutexName(Target)); - if Mutex = 0 then - raise ESakuraSeekerError.Create('Mutexƒnƒ“ƒhƒ‹‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½'); - if WaitForSingleObject(Mutex, 3000) = WAIT_TIMEOUT then - raise ESakuraSeekerError.Create('Mutex“¯Šúƒ^ƒCƒ€ƒAƒEƒg'); - try - MappingHandle := OpenFileMapping(FILE_MAP_READ, false, PChar(Target)); - try - if MappingHandle = 0 then begin - SourceStr := ''; - end else begin - PSaved := MapViewOfFile(MappingHandle, FILE_MAP_READ, 0, 0, 0); - P := PSaved; - if P <> nil then begin - CopyMemory(@Size, P, SizeOf(integer)); - Inc(PChar(P), SizeOf(integer)); - SourceStr := PChar(P); - if Length(SourceStr) > Size then - raise ESakuraSeekerError.Create('FMO‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½'); - end; - end; - finally - //ƒIƒuƒWƒFƒNƒg‚Ì”jŠü - if PSaved <> nil then UnmapViewOfFile(PSaved); - end; - finally - if MappingHandle <> 0 then CloseHandle(MappingHandle); - ReleaseMutex(Mutex); - end; - - //ƒf[ƒ^‚ð‰ðÍ - try - try - Strs := TStringList.Create; - Strs.Text := SourceStr; - for i := 0 to Strs.Count-1 do begin - j := Pos('.', Strs[i]); - ID := Copy(Strs[i], 1, j-1); - Entry := Copy(Strs[i], j+1, Pos(#1, Strs[i])-j-1); - Data := Copy(Strs[i], Pos(#1, Strs[i])+1, High(integer)); - Pro := GetProcessByID(ID); - if Pro = nil then begin - Pro := TSakuraProcess.Create(self); - Pro.ProcessID := ID; - Pro.FMOName := Target; // FMOŽ¯•Ê–¼ - FList.Add(Pro); - end; - Pro.AppendData(Entry, Data); - end; - except - end; - finally - Strs.Free; - end; - FSourceResult := FSourceResult + SourceStr; -end; - -procedure TSakuraSeeker.ClearList; -begin - FList.Clear; -end; - -constructor TSakuraSeeker.Create(AOwner: TComponent); -begin - inherited; - FAutoDetect := true; - FList := TObjectList.Create; - FFileMappingTarget := TStringList.Create; - FFileMappingTarget.Add('Sakura'); - FMutexPool := TStringList.Create; -end; - -destructor TSakuraSeeker.Destroy; -var i: integer; -begin - ClearList; - FList.Free; - FFileMappingTarget.Free; - for i := 0 to FMutexPool.Count-1 do - begin - CloseHandle(StrToInt(Copy(FMutexPool[i], Pos('=', FMutexPool[i])+1, High(integer)))); - end; - FreeAndNil(FMutexPool); -end; - -function TSakuraSeeker.GetCount: integer; -begin - Result := FList.Count; -end; - -function TSakuraSeeker.GetMutex(const Name: String): THandle; -begin - if FMutexPool.Values[Name] <> '' then - begin - Result := THandle(StrToInt(FMutexPool.Values[Name])); - end else - begin - Result := CreateMutex(nil, false, PChar(Name)); - if Result <> 0 then - FMutexPool.Values[Name] := IntToStr(Result); - end; -end; - -function TSakuraSeeker.GetMutexName(const Target: String): String; -begin - if Assigned(FOnGetMutexName) then - begin - Result := Target; - FOnGetMutexName(self, Result); - end else - Result := Target + 'FMO'; -end; - -function TSakuraSeeker.GetProcess(Index: integer): TSakuraProcess; -begin - Result := FList[Index] as TSakuraProcess; -end; - -function TSakuraSeeker.GetProcessByID(ID: String): TSakuraProcess; -var i: integer; -begin - Result := nil; - for i := 0 to FList.Count-1 do begin - if TSakuraProcess(FList[i]).ProcessID = ID then begin - Result := FList[i] as TSakuraProcess; - Exit; - end; - end; -end; - -function TSakuraSeeker.GetProcessByName(Name: String): TSakuraProcess; -var i: integer; -begin - Result := nil; - for i := 0 to FList.Count-1 do begin - if (FList[i] as TSakuraProcess).Name = Name then begin - Result := FList[i] as TSakuraProcess; - Exit; - end; - end; -end; - -function TSakuraSeeker.GetProcessBySetName(Name: String): TSakuraProcess; -var i: integer; -begin - Result := nil; - for i := 0 to FList.Count-1 do begin - if (FList[i] as TSakuraProcess).SetName = Name then begin - Result := FList[i] as TSakuraProcess; - Exit; - end; - end; -end; - -function TSakuraSeeker.KillFMO(const TargetFMOName, TargetID: String): boolean; -var MappingHandle, Mutex: THandle; - P: pointer; - SourceStr, ID: String; - Size: integer; - Strs: TStringList; - i, j: integer; -begin - //ƒtƒ@ƒCƒ‹ƒ}ƒbƒsƒ“ƒOƒIƒuƒWƒFƒNƒg‚̎擾 - Result := false; - P := nil; - Mutex := GetMutex(GetMutexName(TargetFMOName)); - if Mutex = 0 then - raise ESakuraSeekerError.Create('Mutexƒnƒ“ƒhƒ‹‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½'); - if WaitForSingleObject(Mutex, 3000) = WAIT_TIMEOUT then - raise ESakuraSeekerError.Create('Mutex“¯Šúƒ^ƒCƒ€ƒAƒEƒg'); - try - MappingHandle := OpenFileMapping(FILE_MAP_WRITE, false, PChar(TargetFMOName)); - if MappingHandle = 0 then Exit; - try - SourceStr := ''; - P := MapViewOfFile(MappingHandle, FILE_MAP_WRITE, 0, 0, 0); - if P <> nil then begin - CopyMemory(@Size, P, SizeOf(integer)); - Inc(PChar(P), SizeOf(integer)); - SourceStr := PChar(P); - if Length(SourceStr) > Size then - raise ESakuraSeekerError.Create('FMO‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½'); - end; - - //ƒf[ƒ^‚ð‰ðÍ - Strs := TStringList.Create; - try - Strs.Text := SourceStr; - for i := Strs.Count-1 downto 0 do begin - j := Pos('.', Strs[i]); - ID := Copy(Strs[i], 1, j-1); - if ID = TargetID then begin - Strs.Delete(i); // —v‚ç‚È‚¢ƒGƒ“ƒgƒŠ‚ðíœ - Result := true; - end; - end; - SourceStr := Strs.Text; - finally - Strs.Free; - end; - - if Result then begin - CopyMemory(P, PChar(SourceStr), Length(SourceStr)+1); - Dec(PChar(P), SizeOf(integer)); - end; - finally - //ƒIƒuƒWƒFƒNƒg‚Ì”jŠü - if P <> nil then UnmapViewOfFile(P); - CloseHandle(MappingHandle); - end; - finally - ReleaseMutex(Mutex); - end; -end; - -procedure TSakuraSeeker.Loaded; -begin - inherited; - if FAutoDetect and not (csDesigning in ComponentState) then BeginDetect; -end; - -procedure TSakuraSeeker.SetAutoDetect(const Value: boolean); -begin - FAutoDetect := Value; -end; - -procedure TSakuraSeeker.SetFileMappingTarget(const Value: TStrings); -begin - FFileMappingTarget.Assign(Value); -end; - -procedure TSakuraSeeker.SetOnAfterDetection(const Value: TNotifyEvent); -begin - FOnAfterDetection := Value; -end; - -procedure TSakuraSeeker.SetOnDetectResultChanged( - const Value: TNotifyEvent); -begin - FOnDetectResultChanged := Value; -end; - -procedure TSakuraSeeker.SetOnGetMutexName( - const Value: TSakuraSeekerGetMutexNameEvent); -begin - FOnGetMutexName := Value; -end; - -end. - \ No newline at end of file diff --git a/sakurasuite/SakuraSuite.dpk b/sakurasuite/SakuraSuite.dpk deleted file mode 100644 index eb6be4c..0000000 --- a/sakurasuite/SakuraSuite.dpk +++ /dev/null @@ -1,50 +0,0 @@ -package SakuraSuite; - -{$R *.res} -{$R 'SakuraSeeker.dcr'} -{$R 'SsParser.dcr'} -{$R 'IdSLPP20.dcr'} -{$R 'DirectSstp.dcr'} -{$R 'SakuraScriptFountain.dcr'} -{$R 'SsPlayTime.dcr'} -{$ALIGN 8} -{$ASSERTIONS ON} -{$BOOLEVAL OFF} -{$DEBUGINFO ON} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS ON} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO ON} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST ON} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Sakura Component Suite by naruto/CANO-Lab'} -{$IMPLICITBUILD OFF} - -requires - vcl, - rtl; - -// requireß‚ɂ́ATEdit‚ÆIndy??‚Ì2‚‚̃pƒbƒP[ƒW‚ªA -// Delphi‚É‚æ‚Á‚ÄŽ©“®“I‚ɒljÁ‚³‚ê‚é‚Í‚¸B -// ’ljÁ‚·‚é‚©‚Ç‚¤‚©q‚Ë‚éƒ_ƒCƒAƒƒO‚ªo‚½ê‡‚É‚ÍOK‚·‚邱‚ƁB - -contains - SakuraSeeker in 'SakuraSeeker.pas', - SsParser in 'SsParser.pas', - IdSLPP20 in 'IdSLPP20.pas', - DirectSstp in 'DirectSstp.pas', - SakuraScriptFountain in 'SakuraScriptFountain.pas', - SsPlayTime in 'SsPlayTime.pas'; - -end. diff --git a/sakurasuite/SakuraSuite.res b/sakurasuite/SakuraSuite.res deleted file mode 100644 index 920b122628f97633bea092063d2b72c706b5bd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmaJ=O>0v@6g{sm7p3F5ci!a7>P_y0=zJd5qh6pasD$AUZ~vFA^WY8A#|G!N!F~$LYAMxRMZ#;(_9X(2C>O;fmIZM%XA$ z*W#Y@J8Vpn&uD^%F*R4u7)d~E6xX_n(<9uU!tL5%ir#+qB@I0U4E*e zgeDHKgF3cR$R2YFc*N>neSPV(soXki@6L2^U+X`oe_OrM zZG(NvwA*;kNGGn(G4Bl-RlH-|9`^&(*oha%-AHoCtw~+qx1jM2xI219?mn}9;Oxzr z4#B&Wxu-d^)6dR+Tjz3jFV*A@e1~h=Xj%LAU5$TD;GX^y+=O*T?UFh9TVzvT!#@lL B95Mg^ diff --git a/sakurasuite/SsParser.pas b/sakurasuite/SsParser.pas deleted file mode 100644 index 680466d..0000000 --- a/sakurasuite/SsParser.pas +++ /dev/null @@ -1,653 +0,0 @@ -{********************************************************} -{ TSsParser Component - Parser for Sakura Script } -{ } -{ Copyright (c) 2001-2003 naruto/CANO-Lab } -{********************************************************} - -unit SsParser; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; - -type - // Kind of the Markup - // mtTag: Tag. (begins with \) - // mtMeta: Meta expression. (begins with %) - // mtTagErr: Seems to be a markup error - // mtStr: Other normal talk string - TSsMarkUpType = (mtTag, mtMeta, mtTagErr, mtStr); - - // Intercepting the parsing - TSsParseEvent = procedure (Sender: TObject; const Script: String; - var Len: integer; var MarkType: TSsMarkUpType; var Extra: String) of object; - - // Exception class - ESsParserError = class(Exception); - - TSsMarkUp = class(TObject) - private - FPos: integer; - FExtra: String; - FStr: String; - FMarkUpType: TSsMarkUpType; - procedure SetExtra(const Value: String); - public - constructor Create(Pos: integer; MarkUpType: TSsMarkUpType; Str: String; Extra: String = ''); - property Pos: integer read FPos; //This markup is Pos'th character in InputString - property MarkUpType: TSsMarkUpType read FMarkUpType; - property Str: String read FStr; - property Extra: String read FExtra write SetExtra; - end; - - TSsParser = class(TComponent) - private - FTagPattern: TStrings; //SakuraScript tag pattern string - FMetaPattern: TStrings; //SakuraScript meta expression pattern string - FInputString: String; - FMarkUpList: TList; - FLeaveEscape: boolean; - FEscapeInvalidMeta: boolean; - FOnParse: TSsParseEvent; - procedure SetInputString(const Value: String); - function GetCount: integer; - function GetExtra(Index: integer): String; - function GetMarkUpType(Index: integer): TSsMarkUpType; - function GetStr(Index: integer): String; - procedure SetExtra(Index: integer; const Value: String); - procedure ClearList; - procedure SetMetaPattern(const Value: TStrings); - procedure SetTagPattern(const Value: TStrings); - procedure SetOnParse(const Value: TSsParseEvent); - function GetFirstChar(const Str: String): String; - function ChopFirstChar(var Str: String): String; - function GetPosition(Index: integer): integer; - protected - procedure BeginParse; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function MatchP(PStr, PPattern: PChar): integer; - function Match(Str, Pattern: String): integer; - function GetParam(Tag: String; const Index: integer): String; - function EscapeParam(const Param: String): String; - function MarkUpAt(const Pos: integer): integer; - - property Count: integer read GetCount; - property MarkUpType[Index: integer]: TSsMarkUpType read GetMarkUpType; - property Str[Index: integer]: String read GetStr; default; - property Extra[Index: integer]: String read GetExtra write SetExtra; - property Position[Index: integer]: integer read GetPosition; - property InputString: String read FInputString write SetInputString; - published - // Script parsing patterns. - property TagPattern: TStrings read FTagPattern write SetTagPattern; - property MetaPattern: TStrings read FMetaPattern write SetMetaPattern; - // Whether to leave escape sequence "\\" and "\%" in mtStr elements - property LeaveEscape: boolean read FLeaveEscape write FLeaveEscape - default true; - // Replace '%' to '\%' if sequence follwing the '%' could not - // be parsed as a meta expression - property EscapeInvalidMeta: boolean read FEscapeInvalidMeta - write FEscapeInvalidMeta default false; - // Component users can intercept and handle part of the parsing using this event. - property OnParse: TSsParseEvent read FOnParse write SetOnParse; - end; - -procedure Register; - -implementation - -resourcestring - CElementTypeError = '³‚µ‚¢ƒGƒŒƒƒ“ƒgƒ^ƒCƒv‚ð•Ô‚µ‚Ä‚­‚¾‚³‚¢'; - CTagPatternSyntaxError = 'TagPattern•\‹Lƒ~ƒX %d s–Ú'; - CMarkupIndexOutofRange = 'ƒCƒ“ƒfƒbƒNƒX‚ª”ÍˆÍ‚ð‚±‚¦‚Ä‚¢‚Ü‚·'; - -{ - // English error message - CElementTypeError = 'Returned element type is invalid in OnParse.'; - CTagPatternSyntaxError = 'TagPattern syntax error at line %d.'; - CMarkupIndexOutofRange = 'Markup index if out of range.'; -} - - -procedure Register; -begin - RegisterComponents('Samples', [TSsParser]); -end; - -{ TSsParser } - -procedure TSsParser.BeginParse; -var Str, Talk, T, Ex: String; - i, Le: integer; - IsErr: boolean; - Mt: TSsMarkUpType; - PStr: PChar; -begin - ClearList; - Str := FInputString; // The string to be parsed from now - // This is to avoid access violation if `Str` is terminated - // with DBCS leadbyte. (Such string is invalid from the beginning of course) - Str := Str + #0#0; - if Length(Str) = 0 then Exit; - PStr := PChar(Str); - Talk := ''; - while PStr^ <> #0 do begin - if PStr^ = '\' then begin - Inc(PStr); - if PStr^ = '\' then - begin - // Escaped sequence "\\" - if FLeaveEscape then - Talk := Talk + '\\' - else - Talk := Talk + '\'; - Inc(PStr); - Continue; - end else if PStr^ = '%' then - begin - // Escaped sequence "\%" - if FLeaveEscape then - Talk := Talk + '\%' - else - Talk := Talk + '%'; - Inc(PStr); - Continue; - end else - begin - Dec(PStr); - // might be a tag - // Generate OnParser event - Le := 0; - Ex := ''; - IsErr := false; - if Assigned(FOnParse) then begin - FOnParse(Self, String(PStr), Le, Mt, Ex); - if Le > 0 then begin - if (Mt <> mtTag) and (Mt <> mtTagErr) then begin - raise ESsParserError.Create(CElementTypeError); - Exit; - end; - if Mt = mtTagErr then IsErr := true; - end; - end; - if Le <= 0 then begin - for i := 0 to FTagPattern.Count-1 do begin - T := FTagPattern[i]; - if Length(T) = 0 then Continue; - IsErr := false; - if T[1] = '!' then begin - IsErr := true; - T[1] := '\'; - end else if T[1] <> '\' then - raise ESsParserError.CreateFmt(CTagPatternSyntaxError, [i+1]); - Le := MatchP(PStr, PChar(T)); - if Le > 0 then Break; - end; - end; - if Length(Talk) > 0 then begin - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str)-Length(Talk), mtStr, Talk)); - Talk := ''; - end; - if Le > 0 then begin - // Parsed as a correct tag - T := Copy(String(PStr), 1, Le); - if IsErr then - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str), mtTagErr, T, Ex)) - else - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str), mtTag, T, Ex)); - Inc(PStr, Le); - end else begin - // Parsing failed; The character '\' and the next one character is - // marked as a tag error. - Inc(PStr); // Skip '\' - if PStr^ in LeadBytes then - begin - T := '\' + Copy(String(PStr), 1, 2); - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str)-1, mtTagErr, T)); - Inc(PStr, 2); - end else - begin - T := '\' + PStr^; - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str)-1, mtTagErr, T)); - Inc(PStr); - end; - end; - end; - end else if (PStr^ = '%') then begin - Le := 0; Ex := ''; - if Assigned(FOnParse) then begin - FOnParse(Self, String(PStr), Le, Mt, Ex); - if Le > 0 then begin - if Mt <> mtMeta then begin - raise ESsParserError.Create(CElementTypeError); - Exit; - end; - Dec(Le); - end; - end; - Inc(PStr); // Skip '%' - if Le <= 0 then - begin - for i := 0 to FMetaPattern.Count-1 do - begin - if Length(FMetaPattern[i]) = 0 then - Continue; - Le := MatchP(PStr, PChar(FMetaPattern[i])); - if Le > 0 then - Break; - end; - end; - if Le > 0 then - begin - if Length(Talk) > 0 then - begin - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str)-Length(Talk), mtStr, Talk)); - Talk := ''; - end; - T := Copy(String(PStr), 1, Le); - FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str)-1, mtMeta, '%' + T, Ex)); - Inc(PStr, Le); - end else - begin - // in case this %??? sequence seems NOT be a meta expression - if FEscapeInvalidMeta then - Talk := Talk + '\%' - else - Talk := Talk + '%'; - Continue; - end; - end else begin - if PStr^ in LeadBytes then - begin - Talk := Talk + Copy(String(PStr), 1, 2); - Inc(PStr, 2); - end else - begin - Talk := Talk + PStr^; - Inc(PStr); - end; - end; - end; // of while - if Length(Talk) > 0 then FMarkUpList.Add(TSsMarkUp.Create(PStr-PChar(Str)-Length(Talk), mtStr, Talk)); -end; - -function TSsParser.ChopFirstChar(var Str: String): String; -begin - Result := GetFirstChar(Str); - Delete(Str, 1, Length(Result)); -end; - -procedure TSsParser.ClearList; -var i: integer; -begin - for i := FMarkUpList.Count-1 downto 0 do begin - TSsMarkUp(FMarkUpList[i]).Free; - end; - FMarkUpList.Free; - FMarkUpList := TList.Create; -end; - -constructor TSsParser.Create(AOwner: TComponent); -begin - inherited; - FTagPattern := TStringList.Create; - FMetaPattern := TStringList.Create; - FMarkUpList := TList.Create; - FLeaveEscape := true; -end; - -destructor TSsParser.Destroy; -begin - inherited; - FTagPattern.Free; - FMetaPattern.Free; - ClearList; - FMarkUpList.Free; -end; - -function TSsParser.EscapeParam(const Param: String): String; -begin - //StringReplace supports DBCS - Result := StringReplace(Param, '\', '\\', [rfReplaceAll]); - Result := StringReplace(Param, ']', '\]', [rfReplaceAll]); -end; - -function TSsParser.GetCount: integer; -begin - Result := FMarkUpList.Count; -end; - -function TSsParser.GetExtra(Index: integer): String; -begin - if (Index >= 0) and (Index <= FMarkUpList.Count-1) then - Result := TSsMarkUp(FMarkUpList[Index]).Extra - else - Result := ''; -end; - -function TSsParser.GetFirstChar(const Str: String): String; -begin - // Get the first character of the given string. Supports DBCS - if Length(Str) <= 1 then begin - Result := Str; - end else begin - if Str[1] in LeadBytes then begin - Result := Str[1] + Str[2]; - end else begin - Result := Str[1]; - end; - end; -end; - -function TSsParser.GetMarkUpType(Index: integer): TSsMarkUpType; -begin - if (Index >= 0) and (Index <= FMarkUpList.Count-1) then - Result := TSsMarkUp(FMarkUpList[Index]).MarkUpType - else - raise ESsParserError.Create(CMarkupIndexOutOfRange); -end; - -function TSsParser.GetParam(Tag: String; - const Index: integer): String; -var ParamCount: integer; - First, Param: String; - Escape, Inside: boolean; -begin - if Index <= 0 then Exit; - Inside := false; - ParamCount := 0; - Escape := false; - repeat - First := ChopFirstChar(Tag); - if Inside then begin - if Escape then begin - if First = '\' then Param := Param + '\' - else if First = ']' then Param := Param + ']' - else Param := Param + '\' + First; - Escape := false; - end else if First = '\' then - Escape := true - else if First = ']' then - Inside := false - else begin - Escape := false; - Param := Param + First; - end; - end else if First = '[' then begin - Inside := true; - Escape := false; - Param := ''; - Inc(ParamCount); - end; - until (First = '') or ((ParamCount = Index) and not Inside); - if ((ParamCount = Index) and not Inside) then - Result := Param - else - Result := ''; -end; - -function TSsParser.GetPosition(Index: integer): integer; -begin - if (Index >= 0) and (Index <= FMarkUpList.Count-1) then - Result := TSsMarkUp(FMarkUpList[Index]).Pos - else - Result := 0; -end; - -function TSsParser.GetStr(Index: integer): String; -begin - if (Index >= 0) and (Index <= FMarkUpList.Count-1) then - Result := TSsMarkUp(FMarkUpList[Index]).Str - else - Result := ''; -end; - -function TSsParser.MarkUpAt(const Pos: integer): integer; -var i, lo, hi: integer; -begin - if FMarkUpList.Count = 0 then - Result := -1 - else begin - lo := 0; - hi := FMarkUpList.Count-2; - i := (hi-lo) div 2 + lo; - while (hi > lo) do - begin - i := (hi-lo) div 2 + lo; - if (TSsMarkUp(FMarkUpList[i]).Pos >= Pos) and - (TSsMarkUp(FMarkUpList[i+1]).Pos < Pos) then - begin - Result := i; - Exit; - end else if TSsMarkUp(FMarkUpList[i]).Pos > Pos then - hi := i - else - lo := i; - end; - Result := i; - end; -end; - -function TSsParser.Match(Str, Pattern: String): integer; -begin - if (Length(Str) = 0) or (Length(Pattern) = 0) then - Result := 0 - else - Result := MatchP(@Str[1], @Pattern[1]); -end; - -function TSsParser.MatchP(PStr, PPattern: PChar): integer; -var Matched, F, Escape: boolean; -begin - Matched := true; - Result := 0; - while Matched and (PPattern^ <> #0) do begin - if PPattern^ = '%' then - begin - if PStr^ = #0 then - begin - Matched := false; - Break; - end; - Inc(PPattern); - case PPattern^ of - '%': - begin - if PStr^ = '%' then - begin - Inc(Result); - Inc(PStr); - Inc(PPattern); - end else - begin - Matched := false; - Break; - end; - end; - 'd': - begin - if PStr^ in ['0' .. '9'] then - begin - Inc(Result); - Inc(PStr); - Inc(PPattern); - end else - Matched := false; - end; - 'D': - begin - if PStr^ in ['0' .. '9'] then - begin - while PStr^ in ['0' .. '9'] do - begin - Inc(Result); - Inc(PStr); - end; - Inc(PPattern); - end else - Matched := false; - end; - 'b': //String enclosed by '[' and ']'. The content may be an empty string. - begin - if PStr^ <> '[' then - begin - Matched := false; - end else - begin - F := false; - Escape := false; //After escape character - Inc(PStr); // '[' - Inc(Result); // '[' - repeat - if Escape then - begin - Escape := false; - end else - begin - if PStr^ = '\' then Escape := true; - if PStr^ = ']' then F := true; - end; - if PStr^ in LeadBytes then - begin - Inc(Result, 2); - Inc(PStr, 2); - end else - begin - Inc(Result); - Inc(PStr); - end; - until (PStr^ = #0) or F; - if not F then - Matched := false; - end; - Inc(PPattern); - end; - 'c': // String which can be the argument content enclosed by '[' and ']' - begin - Inc(PPattern); - if not (PStr^ = ']') then - begin - Escape := false; - repeat - if Escape then - Escape := false - else if PStr^ = ']' then - Break - else - if PStr^ = '\' then Escape := true; - if PStr^ in LeadBytes then - begin - Inc(Result, 2); - Inc(PStr, 2); - end else - begin - Inc(Result); - Inc(PStr); - end; - until (PStr^ = #0); - end else - Matched := false; - end; - 'm': - begin - if not (PStr^ in LeadBytes) then - begin - Inc(PPattern); - Inc(PStr); - Inc(Result); - end else Matched := false; - end; - 'M': - begin - if (PStr^ in LeadBytes) then - begin - Inc(PPattern); - Inc(PStr, 2); - Inc(Result, 2); - end else Matched := false; - end; - '.': - if (PStr^ in LeadBytes) then - begin - Inc(PPattern); - Inc(PStr, 2); - Inc(Result, 2); - end else - begin - Inc(PPattern); - Inc(PStr); - Inc(Result); - end; - else - if PStr^ = '%' then - begin - Inc(PStr); - Inc(Result); - end else - begin - Matched := false; - end; - end // of case - end else - begin - if PStr^ <> PPattern^ then - Matched := false - else - begin - Inc(Result); - Inc(PStr); - Inc(PPattern); - end; - end; - end; //of while - if not Matched then Result := 0; -end; - -procedure TSsParser.SetExtra(Index: integer; const Value: String); -begin - if (Index >= 0) and (Index <= FMarkUpList.Count-1) then - TSsMarkUp(FMarkUpList[Index]).Extra := Value - else - raise ESsParserError.Create(CMarkupIndexOutOfRange); -end; - -procedure TSsParser.SetInputString(const Value: String); -begin - FInputString := Value; - BeginParse; -end; - -procedure TSsParser.SetMetaPattern(const Value: TStrings); -begin - FMetaPattern.Assign(Value); -end; - -procedure TSsParser.SetOnParse(const Value: TSsParseEvent); -begin - FOnParse := Value; -end; - -procedure TSsParser.SetTagPattern(const Value: TStrings); -begin - FTagPattern.Assign(Value); -end; - -{ TSsMarkUp } - -constructor TSsMarkUp.Create(Pos: integer; MarkUpType: TSsMarkUpType; Str: String; Extra: String = ''); -begin - FPos := Pos; - FMarkUpType := MarkUpType; - FStr := Str; - FExtra := Extra; -end; - -procedure TSsMarkUp.SetExtra(const Value: String); -begin - FExtra := Value; -end; - -end. diff --git a/sakurasuite/SsPlayTime.dcr b/sakurasuite/SsPlayTime.dcr deleted file mode 100644 index 2abba11318bb08eea85458af96e10c06dcb76a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3428 zcmeIzy>1*w48U>5FoKkJ=aOX}AP+zlDFQ@*;J8W0GEd;rV41fNi$fkG$J)=}Vmft# zS|I|?|C!mnFGYfTYfr!99A|cJXKu9=5mD@R6U~$3uOCHzA+y`Pk`M9+uPgaoF62)> z{U(?4>oWSyo42pm6Mv@hZt;WsG}88J?LChn!k*itiMEI za0C+l)#k0GN;EhEi9(yVohi}a2qX$^-jc3FgCmeAw0XOR5)F<(qR{58oJuq}0*OMK zw|Obi;0UDL{kM}1}341sDAQsem~{6 z<(DfyOm=ks|1^7TG6p|go37+S-s6(GHIJ7%<-$KV5`{)B5-1FgK%&sb9>3Hnm6tkY z@?F-czd8Ezr^nIgEj~XyJP_`Cq;WqIJu^Sv_YTq{j*;v5kv|_l9&mH^KEv7?>9e;( znd+^5r<@#{S!w9)kL&#*n_hQD-8{|Da@6bQ%+JY|DmCin$nWdas9xJGb+hLWb!rqf zPNr_I=~1Ufes(^WKNKX!u66UcP94|Hll)=5kLuL2qNVoEb@Y8(^ZVT)wOMv??Opng N>)OdaAD#O|^D9d|)D-{# diff --git a/sakurasuite/SsPlayTime.pas b/sakurasuite/SsPlayTime.pas deleted file mode 100644 index 5d9c705..0000000 --- a/sakurasuite/SsPlayTime.pas +++ /dev/null @@ -1,384 +0,0 @@ -{*************************************************************} -{ TSsPlayTime Component - Estimates SakuraScript playing time } -{ } -{ Copyright (c) 2001-2003 naruto/CANO-Lab } -{*************************************************************} - -unit SsPlayTime; - -interface - -uses - Windows, SysUtils, Classes, SsParser; - -type - TSsPlayTimeException = class(Exception); - TSsPlayTimeInitException = class(TSsPlayTimeException); - - TSsPlayTimeSpecialChar = class(TCollectionItem) - private - FWait: integer; - FChar: String; - procedure SetChar(const Value: String); - procedure SetWait(const Value: integer); - protected - function GetDisplayName: String; override; - public - procedure Assign(Source: TPersistent); override; - function DisplayChar: String; - published - property Char: String read FChar write SetChar; - property Wait: integer read FWait write SetWait; - end; - - TSsPlayTimeSpecialChars = class(TCollection) - end; - - TSsPlayTimeParams = class(TComponent) - private - FCostWait: integer; - FCostDBChar: integer; - FCostChar: integer; - FCostConst: integer; - FCostHiResWait: integer; - FCostSurface: integer; - FCostQuickChar: integer; - FProfileName: String; - FSpecialChars: TSsPlayTimeSpecialChars; - procedure SetCostChar(const Value: integer); - procedure SetCostConst(const Value: integer); - procedure SetCostDBChar(const Value: integer); - procedure SetCostWait(const Value: integer); - procedure SetCostHiResWait(const Value: integer); - procedure SetCostSurface(const Value: integer); - procedure SetCostQuickChar(const Value: integer); - procedure SetProfileName(const Value: String); - procedure SetSpecialChars(const Value: TSsPlayTimeSpecialChars); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure Assign(Source: TPersistent); override; - published - property ProfileName: String read FProfileName write SetProfileName; - property CostConst: integer read FCostConst write SetCostConst default 0; - property CostWait: integer read FCostWait write SetCostWait default 50; - property CostHiResWait: integer read FCostHiResWait write SetCostHiResWait default 1; - property CostSurface: integer read FCostSurface write SetCostSurface default 5; - property CostChar: integer read FCostChar write SetCostChar default 50; - property CostDBChar: integer read FCostDBChar write SetCostDBChar default 50; - property CostQuickChar: integer read FCostQuickChar write SetCostQuickChar default 0; - property SpecialChars: TSsPlayTimeSpecialChars read FSpecialChars write SetSpecialChars; - end; - - TSsPlayTimeCount = record - Wait: integer; - HiResWait: integer; - Surface: integer; - Char: integer; - DBChar: integer; - QuickChar: integer; - Specials: integer; - end; - - TSsPlayTime = class(TComponent) - private - FPlayTimeParams: TSsPlayTimeParams; - FSsParser: TSsParser; - FCounts: TSsPlayTimeCount; - procedure SetPlayTimeParams(const Value: TSsPlayTimeParams); - procedure SetSsParser(const Value: TSsParser); - protected - procedure CountElements; - procedure CountCharacterType(const Str: String; out SB, DB, - SPNum, SPWait: integer); - public - function PlayTime(const Script: String): integer; - property Counts: TSsPlayTimeCount read FCounts; - published - property PlayTimeParams: TSsPlayTimeParams read FPlayTimeParams write SetPlayTimeParams; - property SsParser: TSsParser read FSsParser write SetSsParser; - end; - -procedure Register; - -implementation - -const - CDBWhiteSpace = #129 + #64; // Shift_JIS DB White Space; - -procedure Register; -begin - RegisterComponents('Samples', [TSsPlayTime, TSsPlayTimeParams]); -end; - -{ TSsPlayTimeParams } - -procedure TSsPlayTimeParams.Assign(Source: TPersistent); -var - Src: TSsPlayTimeParams; -begin - if not (Source is TSsPlayTimeParams) then - inherited - else - begin - Src := Source as TSsPlayTimeParams; - FCostConst := Src.FCostConst; - FCostWait := Src.FCostWait; - FCostHiResWait := Src.FCostHiResWait; - FCostSurface := Src.FCostSurface; - FCostChar := Src.FCostChar; - FCostDBChar := Src.FCostDBChar; - FCostQuickChar := Src.FCostQuickChar; - FProfileName := Src.FProfileName; - FSpecialChars.Assign(Src.SpecialChars); - end; -end; - -constructor TSsPlayTimeParams.Create(AOwner: TComponent); -begin - inherited; - FCostConst := 0; - FCostWait := 50; - FCostHiResWait := 1; - FCostSurface := 5; - FCostChar := 50; - FCostDBChar := 50; - FCostQuickChar := 0; - FSpecialChars := TSsPlayTimeSpecialChars.Create(TSsPlayTimeSpecialChar); -end; - -destructor TSsPlayTimeParams.Destroy; -begin - FSpecialChars.Free; - inherited; -end; - -procedure TSsPlayTimeParams.SetCostChar(const Value: integer); -begin - FCostChar := Value; -end; - -procedure TSsPlayTimeParams.SetCostConst(const Value: integer); -begin - FCostConst := Value; -end; - -procedure TSsPlayTimeParams.SetCostDBChar(const Value: integer); -begin - FCostDBChar := Value; -end; - -procedure TSsPlayTimeParams.SetCostHiResWait(const Value: integer); -begin - FCostHiResWait := Value; -end; - -procedure TSsPlayTimeParams.SetCostQuickChar(const Value: integer); -begin - FCostQuickChar := Value; -end; - -procedure TSsPlayTimeParams.SetCostSurface(const Value: integer); -begin - FCostSurface := Value; -end; - -procedure TSsPlayTimeParams.SetCostWait(const Value: integer); -begin - FCostWait := Value; -end; - -procedure TSsPlayTimeParams.SetProfileName(const Value: String); -begin - FProfileName := Value; -end; - -procedure TSsPlayTimeParams.SetSpecialChars( - const Value: TSsPlayTimeSpecialChars); -begin - FSpecialChars.Assign(Value); -end; - -{ TSsPlayTime } - -procedure TSsPlayTime.CountCharacterType(const Str: String; out SB, - DB, SPNum, SPWait: integer); -var - i, j: integer; - InLeadByte, Flag: boolean; - AChar: TSsPlayTimeSpecialChar; -begin - SB := 0; - DB := 0; - SPNum := 0; - SPWait := 0; - InLeadByte := false; - for i := 1 to Length(Str) do - begin - if InLeadByte then - begin - Inc(DB); - InLeadByte := false; - end - else - begin - Flag := false; - for j := 0 to PlayTimeParams.SpecialChars.Count-1 do - begin - AChar := PlayTimeParams.SpecialChars.Items[j] as TSsPlayTimeSpecialChar; - if Length(AChar.Char) = 2 then - begin - if Str[i] + Str[i+1] = AChar.Char then - begin - Inc(SPWait, AChar.Wait); - Inc(SPNum); - Dec(DB); - Flag := true; - InLeadByte := true; - Break; - end; - end else - begin - if Str[i] = AChar.Char then - begin - Inc(SPWait, AChar.Wait); - Inc(SPNum); - Flag := true; - Break; - end; - end; - end; - if not Flag then - begin - if Str[i] in LeadBytes then - InLeadByte := true - else - Inc(SB); - end; - end; - end; -end; - -procedure TSsPlayTime.CountElements; -var - i, SB, DB, SPNum, SPWait: integer; - Mark: String; - InQuick: boolean; -begin - ZeroMemory(@FCounts, sizeof(FCounts)); - InQuick := false; - with SsParser do - begin - for i := 0 to SsParser.Count-1 do - begin - Mark := Str[i]; - case MarkUpType[i] of - mtTag: - begin - if Mark = '\_q' then - InQuick := not InQuick - else if Match(Mark, '\w%d') = 3 then - FCounts.Wait := FCounts.Wait + Ord(Mark[3]) - Ord('0') - else if Match(Mark, '\_w[%D]') > 0 then - Inc(FCounts.HiResWait, StrToInt(GetParam(Mark, 0))) - else if Match(Mark, '\s%d') = 3 then - Inc(FCounts.Surface) - else if Match(Mark, '\s%b') > 0 then - Inc(FCounts.Surface) - end; - mtMeta, mtStr: - begin - if InQuick then - begin - CountCharacterType(Mark, SB, DB, SPNum, SPWait); - Inc(FCounts.QuickChar, SB + DB + SPNum); - end else - begin - CountCharacterType(Mark, SB, DB, SPNum, SPWait); - Inc(FCounts.Char, SB); - Inc(FCounts.DBChar, DB); - Inc(FCounts.Specials, SPWait); - end; - end; - // Ignore all tag errors - end; - end; - end; -end; - -function TSsPlayTime.PlayTime(const Script: String): integer; -begin - Result := 0; - if FSsParser = nil then - raise TSsPlayTimeInitException.Create('SsParser is not set'); - if FPlayTimeParams = nil then - raise TSsPlayTimeInitException.Create('PlayTimeParams is not set'); - SsParser.InputString := Script; - CountElements; - with PlayTimeParams do - Result := CostConst + CostWait * FCounts.Wait + CostSurface * FCounts.Surface + - CostHiResWait * FCounts.HiResWait + CostChar * FCounts.Char + - CostDBChar * FCounts.DBChar + FCounts.Specials + - CostQuickChar * FCounts.QuickChar; -end; - -procedure TSsPlayTime.SetPlayTimeParams(const Value: TSsPlayTimeParams); -begin - FPlayTimeParams := Value; -end; - -procedure TSsPlayTime.SetSsParser(const Value: TSsParser); -begin - FSsParser := Value; -end; - -{ TSsPlayTimeSpecialChar } - -procedure TSsPlayTimeSpecialChar.Assign(Source: TPersistent); -begin - if not(Source is TSsPlayTimeSpecialChar) then - inherited - else - begin - Self.FChar := (Source as TSsPlayTimeSpecialChar).FChar; - Self.FWait := (Source as TSsPlayTimeSpecialChar).FWait; - end; -end; - -function TSsPlayTimeSpecialChar.DisplayChar: String; -begin - if FChar = ' ' then - Result := '(SP)' - else if FChar = CDBWhiteSpace then - Result := '(DB SP)' - else - Result := FChar; -end; - -function TSsPlayTimeSpecialChar.GetDisplayName: String; -begin - Result := Format('"%s" = %d', [DisplayChar, FWait]); -end; - -procedure TSsPlayTimeSpecialChar.SetChar(const Value: String); -begin - if Value = '' then - FChar := Value - else - begin - if (Value[1] in LeadBytes) then - begin - if Length(Value) = 2 then - FChar := Value; - end else if Length(Value) = 1 then - FChar := Value; - end; -end; - -procedure TSsPlayTimeSpecialChar.SetWait(const Value: integer); -begin - FWait := Value; -end; - -end. - \ No newline at end of file diff --git a/sakurasuite/manual/directsstp.html b/sakurasuite/manual/directsstp.html deleted file mode 100644 index 6d96ee4..0000000 --- a/sakurasuite/manual/directsstp.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - -TDirectSSTP - - - - - -
-
-

TDirectSSTP

-

ŠT—v

-

‚³‚­‚çƒXƒNƒŠƒvƒg’ʐMƒvƒƒgƒRƒ‹(SSTP)‚ðŽg‚Á‚āAƒ[ƒJƒ‹ƒzƒXƒgã‚ÌSSTPƒT[ƒo‚ƒʐM‚·‚éƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B

-

DirectSSTP‚ɂ̂ݑΉž‚µ‚Ä‚¢‚Ü‚·B

-

ƒŠƒtƒ@ƒŒƒ“ƒX - ƒvƒƒpƒeƒB

-

SenderName: String [“Ç/‘][Ý/ŽÀ]

-

SSTP‚ÌSenderƒwƒbƒ_•¶Žš—ñ‚ðÝ’肵‚Ü‚·B‚‚܂著‚èŽè‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“(Delphi‘¤)‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“–¼‚Å‚·BŽ©•ª‚ªŠJ”­‚µ‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì–¼‘O‚ð“ü‚ê‚Ä‚­‚¾‚³‚¢BƒfƒtƒHƒ‹ƒg‚́uMy -Programv‚Å‚·‚ªA•K‚¸•ÏX‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B

-

StatusCode: Integer [“Ç‚Ì‚Ý][ŽÀ‚Ì‚Ý]

-

ÅŒã‚É”­s‚µ‚½SSTPƒŠƒNƒGƒXƒg‚É‚æ‚Á‚Ä‹A‚Á‚Ä‚«‚½AƒXƒe[ƒ^ƒXƒR[ƒh‚̐”’l‚ª“ü‚è‚Ü‚·BOK‚È‚ç200”Ô‘äA‚»‚êˆÈŠO‚È‚çƒGƒ‰[‚Å‚·BÚ‚µ‚­‚́ASSTPŽd—l‘‚ð‚²——‚­‚¾‚³‚¢B

-
    -
  • UnknownError(=-1000)’萔‚ªStatusCode‚É“ü‚邱‚Æ‚ª‚ ‚è‚Ü‚·B‚±‚ê‚̓T[ƒo‚ª—Ž‚¿‚Ä‚¢‚½‚È‚Ç‚Ì——R‚ʼnž“š‚ª‚Ü‚Á‚½‚­“¾‚ç‚ê‚È‚©‚Á‚½‚Æ‚«‚̐”’l‚Å‚·B
  • -
-

SentLog: String [“Ç‚Ì‚Ý][ŽÀ‚Ì‚Ý]

-

ÅŒã‚É”­s‚µ‚½SSTP•¶‚ª‚»‚Ì‚Ü‚Ü“ü‚Á‚Ä‚¢‚Ü‚·Bƒ`ƒFƒbƒN‚É‚Ç‚¤‚¼BÄ‘—‚Ì’¼Œã‚É‚àÄ‘—‚Ì‚Æ‚«‚É”­s‚µ‚½•¶‚ª“ü‚Á‚Ä‚¢‚Ü‚·B

-

RecvLog: String [“Ç‚Ì‚Ý][ŽÀ‚Ì‚Ý]

-

ÅŒã‚ɍs‚Á‚½’ʐM‚É‚æ‚éASSTPƒT[ƒo‚©‚ç‚̃ŒƒXƒ|ƒ“ƒX‚ª‘S•”‹L˜^‚³‚ê‚Ä‚¢‚Ü‚·BÄ‘—‚Ì’¼Œã‚É‚àÄ‘—‚Ì‚Æ‚«‚̃ŒƒXƒ|ƒ“ƒX‚ª“ü‚Á‚Ä‚¢‚Ü‚·B

-

LastStatus: TSstpResult; [“Ç‚Ì‚Ý][ŽÀ‚Ì‚Ý]

-

ÅŒã‚ÌSSTPƒT[ƒo‚©‚ç‚̃ŒƒXƒ|ƒ“ƒX‚ªATSstpResultŒ^(ƒR[ƒhŽQÆ)‚Å“ü‚Á‚Ä‚¢‚Ü‚·B

-
    -
  • srUnknownError‚́A‰½‚ç‚©‚ÌŽ–î‚ÅSSTPƒT[ƒo‚©‚ç‚̉ž“š‚ª‚Ü‚Á‚½‚­“¾‚ç‚ê‚È‚©‚Á‚½ê‡‚̃Gƒ‰[‚Å‚·B‚±‚ê‚́ATDirectSSTP‘¤‚̃^ƒCƒ€ƒAƒEƒgA‚ ‚é‚¢‚ÍSSTPƒT[ƒo‚̃rƒW[ó‘Ô(Conflict‚Ƃ͈Ⴄ)‚È‚Ç‚ªŒ´ˆö‚Å”­¶‚µ‚Ü‚·B
  • -
-

CueCount: integer; [“Ç‚Ì‚Ý][ŽÀ‚Ì‚Ý]

-

Ä‘—ƒLƒ…[‚ÉŒ»Ý“ü‚Á‚Ä‚¢‚éSENDƒƒbƒZ[ƒW‚̐”‚ð•Ô‚µ‚Ü‚·B

-

Interval: integer; [“Ç/‘][Ý/ŽÀ]

-

Ä‘—ƒLƒ…[‚©‚çÄ‘—‚ðs‚¤ŠÔŠu‚ðƒ~ƒŠ•b‚ÅŽw’肵‚Ü‚·B1000‚æ‚菬‚³‚¢’l‚àÝ’è‚Å‚«‚Ü‚·‚ªASSTPƒT[ƒo‚ɉߕ‰‰×‚ð—^‚¦‚é‰Â”\«‚ª‚ ‚è‚Ü‚·‚̂ŁA‚Å‚«‚邾‚¯Ý’肵‚È‚¢‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B

-

Sleep: boolean; [“Ç/‘][Ý/ŽÀ]

-

Ä‘—ƒLƒ…[‚©‚ç‚̍đ—‚ðˆêŽž’âŽ~‚µ‚Ü‚·BSleep = true‚̊Ԃ́ASstpSENDCueƒƒ\ƒbƒh‚É‚æ‚Á‚ăƒbƒZ[ƒW‚ª“ü—Í‚³‚ê‚Ä‚àAƒRƒ“ƒ|[ƒlƒ“ƒg“à•”‚Å‹L‰¯‚³‚ê‚邾‚¯‚ŁAŽÀÛ‚É‚ÍSSTPƒT[ƒo‚É‚Í‘—M‚³‚ê‚Ü‚¹‚ñBSleep -= false‚É‚È‚Á‚½‚Æ‚«‚ɁA‘—M‚³‚êŽn‚ß‚Ü‚·B

-

TargetHWnd: THandle; [“Ç/‘][Ý/ŽÀ][DirectSSTP]

-

ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ðÝ’肵‚Ü‚·B

-

Handle: THandle; [“Ç‚Ì‚Ý][ŽÀ‚Ì‚Ý][DirectSSTP]

-

FastSSTP‚́A“à•”‚ŃEƒBƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ð1‚쐬‚µA‚±‚ê‚ðŽg‚Á‚ÄSSTPƒT[ƒo‚ÆDirectSSTP’ʐM‚ðs‚¢‚Ü‚·B
-‚±‚̃vƒƒpƒeƒB‚́A‚»‚̃EƒBƒ“ƒhƒEƒnƒ“ƒhƒ‹‚ð•Ô‚µ‚Ü‚·BDirectSSTP‚ÅSSTP•¶‚ÌHWnd‚ɐݒ肳‚¹‚ê‚éƒnƒ“ƒhƒ‹‚Å‚·B
-“ÆŽ©‚ÌSSTP•¶‚ðì‚肽‚¢‚Ì‚Å‚È‚¢ŒÀ‚èA’¼Ú—˜—p‚·‚邱‚Æ‚Í‚ ‚Ü‚è‚È‚¢‚ÆŽv‚¢‚Ü‚·B

-

ƒƒ\ƒbƒh

-

function TFastSstp.SstpSEND(const Script: String;
-const Option: TSstpSendOptions = []): TSstpResult; overload;

-

function SstpSEND(const Script: TStrings;
-const Option: TSstpSendOptions = [];
-const Handle: HWND = 0): TSstpResult; overload;

-

SENDƒŠƒNƒGƒXƒg‚ð‚·‚®‚É‘—M‚µ‚Ü‚·BŽ©“®“I‚ÉSSTPƒT[ƒo‚Ɛڑ±‚µASENDƒŠƒNƒGƒXƒg‚𑗐M‚µAƒXƒe[ƒ^ƒXƒR[ƒh‚ðŽó‚¯Žæ‚è‚Ü‚·BScript‚ɂ́A”FŽ¯‰Â”\‚È‚³‚­‚çƒXƒNƒŠƒvƒg–{•¶‚ðAOption‚ɂ́Aset -of (soNoDescript, soNoTranslate)‚ð“n‚µ‚Ü‚·B

-

ƒI[ƒo[ƒ[ƒhŠÖ”‚Å‚·‚̂ŁAˆø”‚É‚æ‚Á‚Ä“KØ‚È•û‚ªŒÄ‚΂ê‚Ü‚·B

-

‘æ1‚̌Ăяo‚µ‚́Aˆø”‚ÉStringŒ^‚ðŽæ‚éASSTP/1.1‘Š“–‚Ì’Pƒ‚ÈSENDƒŠƒNƒGƒXƒg‚𑗐M‚µ‚Ü‚·B

-

‘æ2‚̌Ăяo‚µ‚́ASSTP/1.2‚¨‚æ‚Ñ1.3‚ɑΉž‚µ‚Ü‚·Bˆø”‚ÉTStringsŒ^‚ðŽæ‚è‚Ü‚·BScript: -TStrings‚̓ƒ\ƒbƒh“à•”‚ł͉ð•ú‚³‚ê‚Ü‚¹‚ñ‚Ì‚ÅŽ©‘O‚ʼnð•úˆ—‚µ‚Ä‚­‚¾‚³‚¢BScript‚Ì1s–Ú(Script[0])‚ªScriptƒGƒ“ƒgƒŠ‚ɁA2s–ڈȍ~‚ÍEntryƒGƒ“ƒgƒŠ‚É•ÏŠ·‚³‚ê‚Ä‘—M‚³‚ê‚Ü‚·B

-

[TCP/IP] TCP/IP‚Å‘—M‚·‚éê‡AHandle‚É0ˆÈŠO‚Ì’l‚ðÝ’è‚·‚é‚ƁAHWndƒGƒ“ƒgƒŠ‚ª‘—M‚³‚ê‚Ü‚·B•s—v‚È‚çHandle=0‚Æ‚µ‚Ä‚­‚¾‚³‚¢B

-

[DirectSSTP] DirectSSTPƒ‚[ƒh‚ł́AHandle‚Ì’l‚ª—Dæ‚³‚ê‚Ü‚·‚ªA‚±‚ꂪÈ—ª‚³‚ꂽê‡‚Å‚àAƒfƒtƒHƒ‹ƒg‚ÌHWndƒGƒ“ƒgƒŠ‚ª‘—M‚³‚ê‚Ü‚·(“–‘R)B

-

–ß‚è’l‚ÍTSstpResult—ñ‹“Œ^‚Ì’l‚Å‚·BƒXƒe[ƒ^ƒXƒR[ƒh‚̐”’lŽ©‘Ì‚ÅŒ‹‰Ê‚ð’m‚肽‚¢ê‡‚ÍStatusCodeƒvƒƒpƒeƒB‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B

-
    -
  • ‘æ1‚̌Ăяo‚µ‚̏ꍇAˆø”‚ÌStringŒ^•Ï”‚ɉüs•¶Žš(#13#10)‚ðŠÜ‚ß‚È‚¢‚Å‚­‚¾‚³‚¢B -
  • ‘æ2‚̌Ăяo‚µ‚̏ꍇAˆø”‚ÌTStringŒ^‚ÌŠes‚Ì•¶Žš—ñ‚ɉüs•¶Žš‚ðŠÜ‚ß‚È‚¢‚Å‚­‚¾‚³‚¢B -
  • [TCP/IP] SSTP/1.2ˆÈ~‚̌Ăяo‚µ‚ðs‚¤ê‡‚́Aƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BƒfƒtƒHƒ‹ƒg‚̃^ƒCƒ€ƒAƒEƒgŽžŠÔ‚Í1500ms‚Å‚·‚̂ŁA‚±‚ÌŽžŠÔ‚ð‰ß‚¬‚é‚ÆSSTPƒT[ƒo‚©‚ç‚̃ŒƒXƒ|ƒ“ƒX‚ð‘Ò‚½‚¸AŽ©•ª‚©‚ç’ʐM‚ðØ’f‚µ‚Ä‚µ‚Ü‚¤‚±‚Æ‚É‚È‚è‚Ü‚·(ƒXƒe[ƒ^ƒXƒR[ƒh‚ÍUnknownError‚Æ‚È‚è‚Ü‚·)B‘I‘ðŽˆ‚Ì‚ ‚éSendƒŠƒNƒGƒXƒg‚Ì‘O‚Ƀ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ð\•ª’·‚¢‚à‚Ì(Å’á10•bˆÈã)‚ɐݒ肵‚Ä‚­‚¾‚³‚¢B -
  • ‘I‘ðŽˆ‚ðŠÜ‚ÞƒXƒNƒŠƒvƒg‚ðAmateria‚Æ‚Ì‘g‚ݍ‡‚킹‚ÅŽg—p‚·‚éê‡Amateria‚ª”½‰ž‚ð•Ô‚³‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B(CROW, - SSP‚ð‰‚ß‚Æ‚µ‚½‚»‚Ì‘¼‚ÌSSTPƒT[ƒo‚Å‚Í‚»‚̂悤‚È‚±‚Æ‚Í‚ ‚è‚Ü‚¹‚ñ)
    - ‚±‚Ì–â‘è‚ð”ð‚¯‚é‚½‚߂ɂ́A‘I‘ðŽˆ‚ðŠÜ‚ÞƒXƒNƒŠƒvƒg‚ðmateria‚ōж‚µ‚È‚¢‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B(–â‘è‚̏C³‚É‚Í‘—M•”‚̃XƒŒƒbƒh‰»‚ª•K—v‚Å‚·)
  • -
-

function TFastSstp.SstpSENDCue(const Script: String;
-const HighPriority: boolean = false;
-const Option: TSstpSendOptions = []): integer;

-

SENDƒŠƒNƒGƒXƒg‚ðAÄ‘—ƒ‚[ƒh‚Å‘—M‚µ‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚ŌĂяo‚³‚ꂽê‡A‚»‚̃XƒNƒŠƒvƒg‚Í‚·‚®‚É‚Í‘—M‚³‚ꂸAÄ‘—ƒLƒ…[(FSendCue)‚É“ü‚è‚Ü‚·BÄ‘—ƒLƒ…[‚É‘—‚ç‚ꂽƒXƒNƒŠƒvƒg‚́AIntervalƒ~ƒŠ•bŠÔŠu‚ŁAŽ©“®“I‚ÉSSTPƒT[ƒo‚É‘—M‚³‚ê‚Ü‚·BIntervalƒvƒƒpƒeƒB‚àŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

-

HighPriority = true‚̏ꍇAƒLƒ…[‚̐擪‚É”z’u‚³‚ê‚Ü‚·‚̂ŁA‚·‚®‚É‘—M‚³‚ê‚Ü‚·Bfalse‚̏ꍇ‚́AƒLƒ…[‚ÌŒã‚둤‚É•t‚¯‘«‚³‚ê‚Ü‚·B

-

ƒLƒ…[‚ª‹ó‚¾‚Á‚½ê‡‚ðœ‚«A‚·‚®‚É‘—M‚³‚ê‚é‚킯‚Å‚Í‚È‚¢‚̂ŁA–ß‚è’l‚ÍTSstpResultŒ^‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‘ã‚í‚è‚ɁA‚»‚̃ƒbƒZ[ƒW‚ðŽ¯•Ê‚·‚éinteger’l‚ªID‚Æ‚µ‚ж¬‚³‚êA•Ô‚³‚ê‚Ü‚·BÄ‘—‚ÉŠÖŒW‚·‚éŠeŽíƒCƒxƒ“ƒg‚́AƒƒbƒZ[ƒW‚̍đ—‚Ì‚Æ‚«‚ɁA‚±‚ÌID‚ðƒpƒ‰ƒ[ƒ^‚Æ‚µ‚Ä“n‚µ‚Ü‚·‚̂ŁAID‚ð‹L‰¯‚µ‚Ä‚¨‚­Ž–‚ŁAƒƒbƒZ[ƒW‚𓯒肷‚邱‚Æ‚ª‰Â”\‚Å‚·B

-

function TFastSstp.SstpEXECUTE(const Command: String): String;

-

EXECUTEƒŠƒNƒGƒXƒg‚𑗐M‚µ‚Ü‚·BŽ©“®“I‚ÉSSTPƒT[ƒo‚Ɛڑ±‚µAEXECUTEƒŠƒNƒGƒXƒg‚𑗐M‚µAƒXƒe[ƒ^ƒXƒR[ƒh‚ƒljÁƒf[ƒ^‚ðŽó‚¯Žæ‚Á‚½‚ ‚Ɛؒf‚µ‚Ü‚·B

-

’ljÁƒf[ƒ^‚ÍString•Ï”‚É“ü‚Á‚Ä‚¢‚Ü‚·B

-

ŠÖ”ŒÄ‚яo‚µ‚ª¬Œ÷‚µ‚½‚©‚Ç‚¤‚©‚ɂ‚¢‚ẮALastStatusƒvƒƒpƒeƒB‚ÅŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

-

function TFastSstp.SstpCOMMUNICATE(const Sentence: String
-  const Port: integer = 0): TSstpResult;

-

COMMUNICATE/1.2ƒŠƒNƒGƒXƒg‚𑗐M‚µ‚Ü‚·BPort‚É0‚ðŽw’è‚·‚é(ˆø”‚ðÈ—ª‚·‚ê‚ÎŽ©“®“I‚É0‚É‚È‚è‚Ü‚·)ê‡ACOMMUNICATE/1.1‘Š“–‚̃ŠƒNƒGƒXƒg‚Æ‚È‚è‚Ü‚·BPort‚É0ˆÈŠO‚Ì’l‚ðŽw’è‚·‚ê‚΁ACOMMUNICATE/1.2‘Š“–‚̃ŠƒNƒGƒXƒg‚Æ‚È‚è‚Ü‚·B

-
    -
  • FastSSTP‚ÍSSTPƒNƒ‰ƒCƒAƒ“ƒgƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚ ‚èAƒT[ƒo‹@”\‚Í’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚¹‚ñB‚µ‚½‚ª‚Á‚āACOMMUNIATE/1.2‚ðŽÀÛ‚É—LŒø‚ÉŽg‚¤‚ɂ́AŒ»ó‚ł́A‘¼‚Ì•û–@‚ÅSSTPƒT[ƒo‚ðì¬‚·‚邵‚©‚ ‚è‚Ü‚¹‚ñBSSTPƒT[ƒo‹@”\’ñ‹Ÿ‚Í–¢’è‚Å‚·B
  • -
-

function TFastSstp.SstpGIVE(const Document: String): TSstpResult;

-

GIVE/1.0ƒŠƒNƒGƒXƒg‚𑗐M‚µ‚Ü‚·B“à•”‚ÅSstpGIVE1_1ƒƒ\ƒbƒh‚ðŒÄ‚яo‚µ‚Ü‚·BŒÝŠ·«‚Ì‚½‚ß‚ÉŽc‚Á‚Ä‚¢‚Ü‚·‚ªAŽg‚Á‚Ä‚à·‚µŽx‚¦‚ ‚è‚Ü‚¹‚ñB

-

function TFastSstp.SstpGIVE1_1(const Data: String;
-const DataType: TGiveType = gtDocument): TSstpResult;

-

GIVE/1.1ƒŠƒNƒGƒXƒg‚𑗐M‚µ‚Ü‚·BDataType‚ɂ́AgtDocument‚Ü‚½‚ÍgtSongname‚ð“n‚µ‚Ü‚·B
-Dataƒpƒ‰ƒ[ƒ^‚ɁA‚»‚ê‚ɉž‚¶‚½ƒf[ƒ^‚ð“n‚µ‚Ä‚­‚¾‚³‚¢B

-

–ß‚è’l‚̓T[ƒo‚©‚ç‚̉ž“š‚Å‚·B

-

function TFastSstp.SstpExGetName: String;

-

EXECUTEƒƒ\ƒbƒh‚ÅgetnameƒRƒ}ƒ“ƒh‚𔭍s‚µA‚»‚ÌŒ‹‰Ê‚Ì•¶Žš—ñ‚ð•Ô‚µ‚Ü‚·B

-

function TFastSstp.SstpExSetCookie(const Key, Value: String): -TSstpResult;

-

EXECUTEƒƒ\ƒbƒh‚ÅSetCookieƒRƒ}ƒ“ƒh‚𔭍s‚µ‚Ü‚·B
-•¡”s‚̃f[ƒ^‚ɂ͑Ήž‚µ‚Ü‚¹‚ñ(‚‚܂èA#13#10‚ªŠÜ‚Ü‚ê‚éƒf[ƒ^‚̉üs‚ÍŽ©“®“I‚ɏÁ‚µ‚Ü‚·)

-

function TFastSstp.SstpExGetCookie(const Key: String): String;

-

EXECUTEƒƒ\ƒbƒh‚ÅGetCookieƒRƒ}ƒ“ƒh‚𔭍s‚µA‚»‚ÌŒ‹‰Ê‚Ì•¶Žš—ñ‚ð•Ô‚µ‚Ü‚·B
-•¡”s‚̃f[ƒ^‚ɂ͑Ήž‚µ‚Ü‚¹‚ñ(‚‚܂èA#13#10‚ªŠÜ‚Ü‚ê‚éƒf[ƒ^‚̉üs‚ÍŽ©“®“I‚ɏÁ‚µ‚Ü‚·)

-

function TFastSstp.SstpExGetVersion: String;

-

EXECUTEƒƒ\ƒbƒh‚ÅGetVersion‚𔭍s‚µAƒXƒe[ƒ^ƒXƒR[ƒh‚ð•Ô‚µ‚Ü‚·B

-

function TFastSstp.SstpExQuiet(const Quiet: boolean): TSstpResult;

-

EXECUTEƒƒ\ƒbƒh‚ÅQuiet‚Ü‚½‚ÍRestore‚𔭍s‚µAƒXƒe[ƒ^ƒXƒR[ƒh‚ð•Ô‚µ‚Ü‚·B
-Quiet = true‚ÅQuiet, Quiet = false‚ÅRestore‚𔭍s‚Å‚·B

-

procedure ClearCue;

-

Ä‘—ƒLƒ…[‚É“ü‚Á‚Ä‚¢‚郁ƒbƒZ[ƒW‚ð‘S•”íœ‚µ‚Ü‚·B

-

ƒCƒxƒ“ƒg

-

OnResendResend

-

Ä‘—ƒLƒ…[‚̃ƒbƒZ[ƒW‚Ì‘—M‚ÉŽ¸”s‚µA‚»‚̃ƒbƒZ[ƒW‚ð‚à‚¤ˆê“xŒã‚Å‘—‚è‚È‚¨‚·‚ÆŒˆ’肳‚ꂽ‚Æ‚«‚É”­¶‚µ‚Ü‚·B
-‚±‚̃Cƒxƒ“ƒgƒnƒ“ƒhƒ‰‚Ì’†‚ŁALastStatus, StatusCode‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B

-

OnResendEnd

-

Ä‘—ƒLƒ…[‚̃ƒbƒZ[ƒW‚Ì‘—M‚ɐ¬Œ÷‚µA‚»‚̃ƒbƒZ[ƒW‚ðÄ‘—ƒLƒ…[‚©‚çíœ‚·‚é‚Æ‚«‚É”­¶‚µ‚Ü‚·B
-‚±‚̃Cƒxƒ“ƒgƒnƒ“ƒhƒ‰‚Ì’†‚ŁALastStatus, StatusCode‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B

-

OnResendTrying

-

Ä‘—ƒLƒ…[‚̃ƒbƒZ[ƒW‚Ì‘—M’¼‘O‚É”­¶‚µ‚Ü‚·B

-

OnResendCountChange

-

Ä‘—ƒLƒ…[‚Ì“o˜^”‚ª•Ï‚í‚Á‚½’¼Œã‚É”­¶‚µ‚Ü‚·B“o˜^”‚́ACueCountƒvƒƒpƒeƒB‚ÅŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

-

OnAfterConnection

-

‘S‚Ä‚ÌSSTPƒŠƒNƒGƒXƒg‚ª‘—M‚µI‚í‚Á‚½’¼Œã‚É”­¶‚µ‚Ü‚·BRecvLog, -SentLog, LastStatus, StatusCode‚ÌŠeƒvƒƒpƒeƒB‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·BSSTP•¶‚Ì”­s‰ñ”‚̃JƒEƒ“ƒg‚­‚ç‚¢‚É‚ÍŽg‚¦‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-“à•”ˆ—‚ªˆá‚¤‚̂ŁASstpExTimeOut‚̏ꍇ‚É‚Í”­¶‚µ‚Ü‚¹‚ñB

-

—á

-

V‹KƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð1‚쐬‚µAƒtƒH[ƒ€‚ÉTFastSstp‚ð1‚”z’u‚µ‚Ü‚·BSenderNameƒvƒƒpƒeƒB‚ɁA“K“–‚È–¼‘O‚ð•t‚¯‚Ä‚ ‚°‚Ä‚­‚¾‚³‚¢BƒtƒH[ƒ€‚ÌOnCreateƒCƒxƒ“ƒg‚ÉŽŸ‚̂悤‚ɏ‘‚«‚Ü‚·B

-
procedure TForm1.Form1OnCreate(Sender: TObject);
-begin
-  FastSstp1.SstpSEND('\s0\hƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ª‹N“®‚µ‚½‚æB\e', [soNoDescript]);
-end;
-

‚ ‚Æ‚Í‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚·‚邾‚¯‚Å‚·B

-

Ä‘—‚ɂ‚¢‚Ä‚Ì‘S”Ê“I’ˆÓ

-
    -
  • Interval‚ð¬‚³‚È’l‚É‚µ‚·‚¬‚È‚¢‚悤‚É‹C‚ð‚‚¯‚Ä‚­‚¾‚³‚¢B -
  • Ä‘—‚ªs‚í‚ꂽ‚Æ‚«ARecvLog, SentLog, LastStatus, StatusCode‚ÌŠeƒvƒƒpƒeƒB‚͕ω»‚µ‚Ü‚·B‚µ‚½‚ª‚Á‚āASstpSENDCueƒƒ\ƒbƒh‚ƁA‘¼‚ÌSSTPƒƒ\ƒbƒh‚𕹗p‚·‚éê‡‚́A‚±‚ê‚ç‚̃vƒƒpƒeƒB‚ɃAƒNƒZƒX‚·‚é‘O‚ɍđ—‚ªŽn‚Ü‚ç‚È‚¢‚悤‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B—Ⴆ‚΁Aƒ{ƒ^ƒ“‚ÌOnClickƒCƒxƒ“ƒg‚ÅSstpCOMMUNICATEƒƒ\ƒbƒh‚ð—˜—p‚µ‚½ê‡‚́ALastStatus“™‚̃vƒƒpƒeƒB‚ɂ́A‚»‚ÌOnClickƒCƒxƒ“ƒg“à‚ł̂݃AƒNƒZƒX‚·‚é‚©A‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Ì’l‚ª•K—v‚È‚­‚È‚é‚܂ŁASleep - := true‚É‚·‚é‚悤‚É‚µ‚Ü‚·B(Ä‘—‹@”\‚ðˆêØs‚í‚È‚¢ê‡‚Í‹C‚É‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñ) -
  • Ä‘—‹@”\‚ðŽg‚Á‚½ê‡A‡”Ô‚Í•ÛŽ‚³‚ê‚Ü‚·B‚‚܂èA‚ ‚Æ‚©‚ç‘—‚Á‚½ƒƒbƒZ[ƒW‚Í•K‚¸æ‚É‘—‚Á‚½ƒƒbƒZ[ƒW‚æ‚èŒã‚É“Í‚«‚Ü‚·B‚ªASstpSENDCue‚ðŽg‚Á‚Ä‘—M‚µ‚½ƒƒbƒZ[ƒW‚ƃƒbƒZ[ƒW‚̊ԂɁA‘¼‚ÌSSTP‘Ήžƒ\ƒtƒg‚âA‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒgŽ©g‚©‚ç‚́A•Ê‚̃ƒbƒZ[ƒW‚ª‹²‚Ü‚Á‚Ä“Í‚­‰Â”\«‚͏\•ª‚ ‚è‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BQuiet‚𕹗p‚·‚éŽè‚à‚ ‚è‚Ü‚·‚ªB
  • -
- - - - diff --git a/sakurasuite/manual/index.html b/sakurasuite/manual/index.html deleted file mode 100644 index dbcbd2f..0000000 --- a/sakurasuite/manual/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -

Sakura Component Suite

-

-‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒgW‚́AŽf‚©ACROWASSP“™‚̃Lƒƒƒ‰ƒNƒ^ƒG[ƒWƒFƒ“ƒgƒ\ƒtƒg(ˆÈ‰ºA‚±‚ê‚ç‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðuŽf‚©ŒÝŠ·ƒx[ƒXƒEƒFƒAv‚ƌĂт܂·)ŠÖ˜A‚̃†[ƒeƒBƒŠƒeƒB“I‚È“®ì‚ðŽÀŒ»‚·‚éƒRƒ“ƒ|[ƒlƒ“ƒgW‚Å‚·B‚Ü‚½ASSTP -Bottle ( http://bottle.mikage.to -)—p‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B

-

‚©‚È‚èŽG‘½‚Å‚·B

-

ƒRƒ“ƒ|[ƒlƒ“ƒgˆê——

-

TSakuraSeeker

-

TSakuraSeeker‚́AFMO‚ðŽæ“¾‚µ‚āAŠù‘¶‚ÌŽf‚©ŒÝŠ·ƒVƒXƒeƒ€‚̃vƒƒZƒX‚ð”­Œ©‚µ‚Ü‚·B

-

TSsParser

-

TSsParser‚́A‚³‚­‚çƒXƒNƒŠƒvƒg‰ðÍ—p‚̃p[ƒTƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B‚³‚­‚çƒXƒNƒŠƒvƒg‚ð‚‘¬‚ɉðÍ‚µ‚Ü‚·B

-

TSsPlayTime, TSsPlayTimeParams

-

‚±‚ê‚ç‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚É‚æ‚Á‚āA‚³‚­‚çƒXƒNƒŠƒvƒg‚̍ж‚É‚©‚©‚鎞ŠÔ‚ð—\‘ª‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B

-

TSakuraScriptFountain

-

TSakuraScriptFountain‚́A–{“cŸ•FŽì‚̃Rƒ“ƒ|[ƒlƒ“ƒgATEditor—p‚Ì•¶Žš—ñ‰ðÍƒp[ƒT(TFountain)‚Å‚·B

-

TEditor‚¨‚æ‚ÑTSsParser‚Æ‘g‚ݍ‡‚킹‚ÄŽg‚¤‚±‚ƂŁA‚³‚­‚çƒXƒNƒŠƒvƒg‚ðuŠÔ‚ɐF•ª‚¯E\•¶‹¦’²‚µ‚Ä•\Ž¦‚·‚éƒGƒfƒBƒ^‚ðAƒR[ƒhƒŒƒX‚ÅŽÀŒ»‚Å‚«‚Ü‚·B

-

RichEdit‚ð—˜—p‚µ‚ÄŽ©•ª‚Å•`‰æ‚·‚é‚æ‚èƒ_ƒ“ƒgƒc‚ō‚‘¬‚Å‚·B

-

TDirectSSTP

-

TDirectSSTP‚́ADirectSSTP’ʐM‚ðs‚¢‚Ü‚·B

-

TIdSLPP20

-

SSTP Bottle ƒT[ƒrƒX‚ɐڑ±‚·‚éSLPPƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B

-

§ìŠÂ‹«

-

Borland Delphi Studio 7 Professional

-

‚±‚¿‚ç‚ŃRƒ“ƒpƒCƒ‹‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚Ä‚¢‚é‚Ì‚ÍBorland Delphi 6 Personal”Å‚Å‚·BDelphi 5‚Å‚à‘½•ª“®‚­‚ÆŽv‚¢‚Ü‚·B

-

ƒ‰ƒCƒZƒ“ƒX

-

‚±‚̃A[ƒJƒCƒu‚ÉŠÜ‚Ü‚ê‚é‚·‚ׂẴ\[ƒXƒR[ƒhA‚¨‚æ‚уhƒLƒ…ƒƒ“ƒg‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Æ‚µ‚Ü‚·B

-

-ƒ\[ƒXƒR[ƒhŒ`Ž®EƒoƒCƒiƒŠŒ`Ž®‚É‚æ‚é‚ ‚ç‚ä‚é—˜—pEÄ”z•zE‰ü‘¢EÄƒpƒbƒP[ƒWƒ“ƒOEÄƒ‰ƒCƒZƒ“ƒXE”Ì”„‚́A‰ü•Ï‚Ì—L–³‚ÉŠÖ‚í‚炸AˆÈ‰º‚ÌðŒ‚Ì‚à‚Ƃōs‚Á‚Ä‚­‚¾‚³‚¢B

-
    -
  • - ‚·‚ׂĂ͌»ó‚Ì‚Ü‚Ü”z•z‚³‚ê‚é‚à‚Ì‚Å‚ ‚èA“®ì‚µ‚½A‚ ‚é‚¢‚Í“®ì‚µ‚È‚©‚Á‚½Œ‹‰Ê‚É‚æ‚éA•¨Ž¿“IEl“IE“dŽq“IEŒoÏ“IE‚»‚Ì‘¼ˆêØ‚Ì”j‘¹E‘¹ŠQE‘¹Ž¸‚ɂ‚¢‚ÄŒ´ìŽÒ(naruto/CANO-Lab)‚͉½‚ç‚̐ӔC‚𕉂¢‚Ü‚¹‚ñB
  • -
-

ìŽÒ‚̓Tƒ|[ƒgEƒoƒO‚̏C³‚È‚Ç‚ðA‰Â”\‚È‚çs‚¢‚Ü‚·‚ª‹`–±‚Å‚Í‚ ‚è‚Ü‚¹‚ñB

- - - - \ No newline at end of file diff --git a/sakurasuite/manual/sakuraprocess.html b/sakurasuite/manual/sakuraprocess.html deleted file mode 100644 index 71a0311..0000000 --- a/sakurasuite/manual/sakuraprocess.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - -V‚µ‚¢ƒy[ƒW 0 - - - - - -

TSakuraProcess

-

ŠT—v

-

TSakuraSeeker‚́AƒvƒƒZƒX‚ðŽæ“¾‚·‚éƒvƒƒpƒeƒB‚ª•Ô‚·‚à‚̂ŁA’Pˆê‚ÌŽf‚©ŒÝŠ·ƒVƒXƒeƒ€‚̃vƒƒZƒX‚ð•\Œ»‚µ‚Ü‚·B

-

TSakuraSeeker‚É‚æ‚Á‚ÄŽ©“®“I‚ÉŠÇ—‚³‚ê‚Ü‚·‚̂ŁACreate, Free‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B

-

Œp³

-

TObject - TSakuraProcess

-

ŽQÆ

-

TSakuraSeeker

-

ŠÈ’P‚ÈŽg—p—á

-

TSakuraSeekerŽQÆ

-

ƒŠƒtƒ@ƒŒƒ“ƒX - ƒvƒƒpƒeƒB

-
-
property ProcessID: String
-
ƒvƒƒZƒXID‚Å‚·B‚½‚¾‚µA“–‰‚ÌŽd—l‚ł̓vƒƒZƒXƒnƒ“ƒhƒ‹‚ÌMD5’l‚Å‚·‚ªAMateriaˆÈŠO‚Ì‘½ƒS[ƒXƒg‘ΉžŠÂ‹«SSTPƒT[ƒo‚Å‚ÍŠg’£‚³‚ê‚Ä‚¢‚Ü‚·B—v‚·‚é‚ɃS[ƒXƒg(ƒvƒƒZƒX‚Å‚Í‚È‚­)‚²‚ƂɃ†ƒj[ƒN‚Å‚ ‚鉽‚ç‚©‚Ì•¶Žš—ñ’l‚ª“ü‚Á‚Ä‚¢‚éA‚ƍl‚¦‚Ä‚­‚¾‚³‚¢B
- ƒ†[ƒU‚ª‘ã“ü‚Í‚Å‚«‚Ü‚·‚ª‚»‚¤‚·‚邱‚ƂɈӖ¡‚Í‚ ‚è‚Ü‚¹‚ñB
-
property FMOName: String
-
FMOŽ¯•Ê–¼‚Å‚·BŠî–{“I‚ɁuSakurav‚ª“ü‚è‚Ü‚·‚ªA‘¼‚ÌFMO‚©‚çƒvƒƒZƒX‚ð“Ç‚ÝŽæ‚Á‚½ê‡‚É‚Í‚»‚ꂪ“ü‚è‚Ü‚·BTSakuraSeeker.FileMappingTarget - ƒvƒƒpƒeƒB‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-
property HWnd: THandle
-
ƒvƒƒZƒX‚̃EƒBƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Å‚·BŒ»Ý‚Ì‘½‚­‚ÌSSTPƒT[ƒo‚̊‹«‚Å‚Í1‚‚̃EƒBƒ“ƒhƒEƒnƒ“ƒhƒ‹‚Å‘½”‚̃S[ƒXƒg‚ÌSSTP‚ðŽóM‚·‚邱‚Æ‚ª‰Â”\‚É‚È‚Á‚Ä‚¢‚Ü‚·‚̂ŁA‚±‚ê‚ðƒL[‚É’l‚ðŒŸõ‚·‚é‚悤‚ÈŽÀ‘•‚͍s‚í‚È‚¢‚Å‚­‚¾‚³‚¢B
-
property Name: String
-
ƒS[ƒXƒg‚Ì–{‘Ì‘¤(ƒXƒR[ƒv0‘¤)‚Ì–¼‘O‚Å‚·BData['name'] ‚Æ“¯“™‚Å‚·B
- ƒ†[ƒU‚ª‘‚«ž‚Ý‚Í‚Å‚«‚Ü‚·‚ª‚»‚¤‚·‚éˆÓ–¡‚Í‚Ü‚¸‚ ‚è‚Ü‚¹‚ñB
-
property KeroName: String
-
ƒS[ƒXƒg‚Ì‚¤‚ɂイ‘¤(ƒXƒR[ƒv1‘¤)‚Ì–¼‘O‚Å‚·BData['keroname'] ‚Æ“¯“™‚Å‚·B
- ƒ†[ƒU‚ª‘‚«ž‚Ý‚Í‚Å‚«‚Ü‚·‚ª‚»‚¤‚·‚éˆÓ–¡‚Í‚Ü‚¸‚ ‚è‚Ü‚¹‚ñB
-
property SetName: String
-
–{‘Ì‘¤‚Æ‚¤‚ɂイ‘¤‚Ì–¼‘O‚ðƒRƒ“ƒ}‚ÅŒ‹‡‚µ‚½‚à‚Ì‚ð•Ô‚µ‚Ü‚·B
-
property Data[Key: String]: String
-
ƒvƒƒZƒX‚̃Gƒ“ƒgƒŠ–¼‚©‚ç’¼Ú’l‚ðŽæ“¾‚µ‚Ü‚·B
-
property Count: integer read GetCount;
- property DataAt[Index: integer]: String
- property KeyAt[Index: integer]: String
-
‚±‚ê‚ç‚́A‚·‚ׂẴGƒ“ƒgƒŠ–¼‚ð‡”Ô‚É‘–¸‚µ‚½‚¢ê‡‚ÉŽg—p‚Å‚«‚Ü‚·B‚»‚ꂼ‚ê“Ç‚ñ‚ÅŽš‚Ì‚²‚Æ‚­‚Å‚·B“Ç‚ÝŽæ‚èê—pƒvƒƒpƒeƒB‚Å‚·B
-
- - - - diff --git a/sakurasuite/manual/sakurascriptfountain.html b/sakurasuite/manual/sakurascriptfountain.html deleted file mode 100644 index 43011a3..0000000 --- a/sakurasuite/manual/sakurascriptfountain.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -TSakuraScriptFountain - - - - - -

TSakuraScriptFountain

-

ŠT—v

-

TSsParser‚Æ‹¦’²‚µ‚Ä“®‚­ATEditor—p•¶Žš—ñ‰ðÍƒp[ƒT‚Å‚·B

-

TEditor‚Í–{“cŸ•FŽì¬‚̃GƒfƒBƒ^ƒRƒ“ƒ|[ƒlƒ“ƒg‚ŁA‚½‚Æ‚¦‚ÎDelphi‚̃\[ƒXƒR[ƒhƒGƒfƒBƒ^•”•ª‚̂悤‚È‚à‚Ì‚ªŠÈ’P‚ÉŽÀ‘•‚Å‚«‚Ü‚·BÚ×‚Í - -http://member.nifty.ne.jp/~katsuhiko/ ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

-

TSakuraScriptFountain -‚ðŽg‚¤‚ƁAŽ©“®‚ō\•¶‚ª‹­’²•\Ž¦‚³‚ê‚邳‚­‚çƒXƒNƒŠƒvƒgƒGƒfƒBƒ^‚ªAŠÈ’P‚ÉŽÀ‘•‚Å‚«‚Ü‚·B

-

-ŠeŽí‚Ìžx‚ÌŽÀ‘•‚É‚¨‚¢‚ㆁ[ƒU‚ª—˜—p‚·‚éA—lX‚È‚³‚­‚çƒXƒNƒŠƒvƒgŽd—lŠO‚̃}[ƒNƒAƒbƒv‚ɂ͑Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñB(“K“–‚É‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚ðŒp³‚µ‚ÄŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·)

-

Šî–{“I‚ÈŽg‚¢•û

-

TSsParser‚ðƒtƒH[ƒ€‚É“\‚è•t‚¯‚Ü‚·BÅ’áŒÀAMetaPattern, -TagPattern‚Ì—¼•û‚ð’è‹`‚·‚é•K—v‚ª‚ ‚è‚Ü‚·BEscapeInvalidMeta, -LeaveEscape‚ÌŠeƒvƒƒpƒeƒB‚̐ݒè‚́A‚ǂ̂悤‚É‚µ‚Ä‚¢‚Ä‚à–â‘è‚ ‚è‚Ü‚¹‚ñB

-

TSakuraScriptFountain‚ðƒtƒH[ƒ€‚É“\‚è•t‚¯‚Ü‚·BƒIƒuƒWƒFƒNƒgƒCƒ“ƒXƒyƒNƒ^‚ŁASsParserƒvƒƒpƒeƒB‚ɁAæ‚Ù‚Ç“\‚è•t‚¯‚½SsParser‚ð‘I‘ð‚µ‚Ü‚·B‚Ü‚½AF‚âƒtƒHƒ“ƒg‚ÉŠÖ‚·‚éŠeŽíƒvƒƒpƒeƒB‚ð•ÒW‚µ‚Ü‚·B

-

TEditor‚ðƒtƒH[ƒ€‚É“\‚è•t‚¯‚Ü‚·BƒIƒuƒWƒFƒNƒgƒCƒ“ƒXƒyƒNƒ^‚ŁAFountainƒvƒƒpƒeƒB‚ɁAæ‚Ù‚Ç“\‚è•t‚¯‚½SakuraScriptFountain‚ð‘I‘ð‚µ‚Ü‚·B

-

ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚µ‚Ü‚·B

-

’ˆÓ

-

TSsParser‚ð“à•”‚Å—˜—p‚µ‚Ü‚·‚ªAInputString‚È‚Ç‚Ì’†g‚͕ύX‚³‚ê‚Ü‚¹‚ñB‘¼‚Ì–Ú“I‚ŃtƒH[ƒ€‚É -TSsParser ‚ð“\‚è•t‚¯‚Ä—˜—p‚µ‚Ä‚¢‚éê‡‚ɂ́ATEditor.Fountain -‚Æ‚µ‚Ä‚»‚ê‚ðŽQÆ‚µ‚Ä‚àAŠù‘¶‚̃R[ƒh‚ւ̉e‹¿‚Í‚ ‚è‚Ü‚¹‚ñB

-

SakuraScriptFountain‚̃^ƒO‚̉ðŽß‚ÍTSsParser‚Ɉˑ¶‚µ‚Ü‚·BTagPattern‚ð‚ë‚­‚ɐݒ肹‚¸A\h‚â\u‚ªŠÜ‚Ü‚ê‚Ä‚¢‚È‚¢A‚Æ‚¢‚Á‚½ó‹µ‚̂܂܂ł͈êØ‚̐F•ª‚¯‚ª‚³‚ê‚Ü‚¹‚ñB

-

\_sƒ^ƒOŽü‚è‚ɂ‚¢‚Ä

-

TSakuraScriptFountain‚ł́A\_sƒ^ƒO‚́uˆÍ‚Þƒ^ƒOv‚Å‚ ‚é‚ƉðŽß‚µ‚Ä‚¨‚èA\_s‚É‚æ‚éƒVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“‚́A\0‚â\1‚É‚æ‚éƒXƒR[ƒv‚æ‚è—Dæ‡ˆÊ‚ª‚‚­ -A‚©‚“Ɨ§‚µ‚½ˆêŽí‚̏ó‘Ô‚Å‚ ‚éA‚ƉðŽß‚µ‚Ü‚·B‚‚܂èAƒVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“ó‘Ԃ́A\0‚â\1‚Å‚Í‰ðœ‚³‚ꂸA‚Ü‚½\_s“à‚É‚¨‚¢‚Ä\0‚â\1ƒ^ƒO‚ª‘¶Ý‚µ‚½ê‡A‚»‚ê‚ç‚Í’Pƒ‚ɁuƒVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“‚ðo‚½Œã‚̃XƒR[ƒv‚ðŒˆ’è‚·‚év‚¾‚¯‚Å‚·B

-

‚±‚̉ðŽß‚Í2003”N6ŒŽŒ»Ý‚ÌmateriaASSPACROW(‚ƁA‘¼‚Ì‘½‚­‚ÌSakuraScriptˆ—Œn)‚ÌŠeÅV”łɏ€‹’‚Æ‚È‚Á‚Ä‚¢‚Ü‚·‚ªAˆê•”‚̌¢ˆ—Œn‚ł́A\0‚â\1‚É‚æ‚Á‚ăVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“‚̏ó‘Ԃɉe‹¿‚ð—^‚¦‚é‹““®‚ð‚µ‚Ä‚¢‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B

-

‚Ü‚½A2003”N6ŒŽŒ»ÝÅV”Å‚Å‚ ‚émateria583‚ł́AƒVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“’†‚É\0‚â\1‚ªŒ»‚ꂽê‡‚Ɍ듮ì‚·‚éAƒVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“‚Ì–¾Ž¦“I‚È‰ðœŒã‚ɃXƒR[ƒv‚ª•s’è‚Æ‚È‚éA‚Æ‚¢‚Á‚½ƒoƒO‚ª‘¶Ý‚µ‚Ü‚·B(‚±‚ê‚ç‚Í–¾‚ç‚©‚ɃoƒO‚ÆŽv‚í‚ê‚é‹““®‚Å‚ ‚邽‚ßTSakuraScriptFountain‚Å‚±‚ê‚ç‚Ì“®ì‚ðÄŒ»‚·‚é—\’è‚Í‚ ‚è‚Ü‚¹‚ñ)

-

ƒŠƒtƒ@ƒŒƒ“ƒX - ƒvƒƒpƒeƒB

-
-
property Scope0Color: TFountainColor read FScope0Color write - SetScope0Color;
- property Scope1Color: TFountainColor read FScope1Color write SetScope1Color;
-
-‚»‚ꂼ‚êAƒXƒR[ƒv0(–{‘Ì‘¤;\h‘¤;\0‘¤)AƒXƒR[ƒv1(‚¤‚ɂイ‘¤;\u‘¤;\1‘¤)‚ł̉ï˜b•¶Žš—ñ‚̐F‚ðŽw’肵‚Ü‚·B - -
-
property TagColor: TFountainColor read FTagColor write SetTagColor;
-
ƒ^ƒO‚̐F‚ðŽw’肵‚Ü‚·
-
property TagErrorColor: TFountainColor read FTagErrorColor write - SetTagErrorColor;
-
ƒ^ƒOƒGƒ‰[‚Æ”»’f‚³‚ꂽê‡‚̐F‚ðŽw’肵‚Ü‚·
-
property MetaWordColor: TFountainColor read FMetaWordColor write - SetMetaWordColor;
-
ƒƒ^•¶Žš—ñ‚̐F‚ðŽw’肵‚Ü‚·
-
property SynchronizedColor: TFountainColor read FSynchronizedColor write - SetSynchronizedColor;
-
ƒVƒ“ƒNƒƒiƒCƒYƒhƒZƒbƒVƒ‡ƒ“(\_s)’†‚̐F‚ðŽw’肵‚Ü‚·
-
property SakuraScriptParser: TSsParser read FSakuraScriptParser write - SetSakuraScriptParser;
-
SsParser‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽw’肵‚Ü‚·B‚±‚ÌŽw’è‚́A³‚µ‚­ƒXƒNƒŠƒvƒg‚ð‰ðŽß‚³‚¹‚邽‚ß‚É•K{‚Å‚·B
-
property ChangeScopeBy01: boolean read FChangeScopeBy01 write - SetChangeScopeBy01 default true;
-
\0, \1ƒ^ƒO‚ðƒXƒR[ƒv‚̕ύX–½—߂ƉðŽß‚µAF•ª‚¯‚ðs‚¤‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Ítrue‚Å‚·B(u‰½‚©(‰¼)vŽž‘ã - ‚̌¢ƒXƒNƒŠƒvƒgŽd—l‚ł́A‚±‚ê‚ç‚̃^ƒO‚ª‘S‚­•Ê‚̈Ӗ¡‚ðŽ‚Â–½—ß‚Å‚ ‚Á‚½‚±‚Æ‚ð”O‚Ì‚½‚ߍl—¶‚µ‚Ä‚­‚¾‚³‚¢)
-
property ChangeScopeByHU: boolean read FChangeScopeByHU write - SetChangeScopeByHU default true;
-
\h, \uƒ^ƒO‚ðƒXƒR[ƒv‚̕ύX–½—߂ƉðŽß‚µAF•ª‚¯‚ðs‚¤‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Ítrue‚Å‚·B(Œ»Ý‚ÍŒ´‘¥‚Æ‚µ‚Ä\0, - \1‚ð‘ã‚í‚è‚ÉŽg—p‚·‚邱‚Æ‚É‚È‚Á‚Ä‚¢‚é‚̂ŁA‰“‚¢«—ˆ‚É‚±‚ê‚ç‚̃}[ƒNƒAƒbƒv‚ðŒ»Ý‚ÌˆÓ–¡‚Å—‰ð‚µ‚È‚¢ƒvƒƒOƒ‰ƒ€‚ªoŒ»‚·‚é‚©‚à‚µ‚ê‚È‚¢‚±‚Æ‚ð”O‚Ì‚½‚ߍl—¶‚µ‚Ä‚­‚¾‚³‚¢)
-
property ProcessSync: boolean read FProcessSync write SetProcessSync - default true;
-
\_sƒ^ƒO‚ðƒVƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“‚É“ü‚é/o‚邽‚ß‚Ì•¶Žš—ñ‚ƉðŽß‚µAF•ª‚¯‚ðs‚¤‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
- false‚̏ꍇ‚̓Vƒ“ƒNƒƒiƒCƒYƒZƒbƒVƒ‡ƒ“‚ðl—¶‚µ‚Ü‚¹‚ñB
-
- - - - \ No newline at end of file diff --git a/sakurasuite/manual/sakuraseeker.html b/sakurasuite/manual/sakuraseeker.html deleted file mode 100644 index 8ffde89..0000000 --- a/sakurasuite/manual/sakuraseeker.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -TSakuraSeeker - - - - - -

TSakuraSeeker

-

ŠT—v

-

Žf‚©ŒÝŠ·ƒVƒXƒeƒ€‚ÌFile-mapping Object(’ʏÌFMO)‚ð—˜—p‚µ‚āAŒ»Ý‚̃[ƒJƒ‹ƒ}ƒVƒ“‚Å‹N“®‚µ‚Ä‚¢‚éŽf‚©ŒÝŠ·ƒVƒXƒeƒ€‚̏î•ñ‚ðŽæ“¾‚µ‚Ü‚·B

-

2003/04 ‚æ‚èA'SakuraFMO'‚̃~ƒ…[ƒeƒbƒNƒXƒIƒuƒWƒFƒNƒg‚É‚æ‚éAFMO“¯ŽžƒAƒNƒZƒX‚̃uƒƒbƒN‚ɑΉž‚µAˆÀ‘S«‚ª‘‚µ‚Ä‚¢‚Ü‚·B

-

2003”N04ŒŽŒ»Ý‚Å‚±‚Ì'SakuraFMO'‚É‚æ‚éƒVƒ“ƒNƒƒiƒCƒ[[ƒVƒ‡ƒ“‚ɑΉž‚µ‚Ä‚¢‚éŽf‚©ŠÖ˜Aƒ\ƒtƒgƒEƒFƒA‚́A

-
    -
  • CROW
  • -
  • SSP
  • -
  • BBC
  • -
  • SSSB
  • -
  • SSTP-Viewer
  • -
  • SSTP Bottle Client
  • -
-

‚Å‚·B

-

‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚́AŽæ“¾‚µ‚½HWND‚ɑ΂µ‚āATDirectSSTP‚Æ•¹‚¹‚ÄŽg‚¤‚Æ‚æ‚èŒø‰Ê‚ª‚ ‚è‚Ü‚·B

-

"Sakura"ˆÈŠO‚ÌFMO‚ð“Ç‚ÝŽæ‚é‹@”\‚ª‚ ‚è‚Ü‚·B

-

SakuraSeeker‚ÍFMOæ“ª4ƒoƒCƒg‚É’è‹`‚³‚ê‚Ä‚¢‚éFMOƒTƒCƒY‚𐳂µ‚­‰ðŽß‚µ‚Ü‚·(”CˆÓ‚̃TƒCƒY‚ÌFMO‚ªˆµ‚¦‚Ü‚·)B

-

Œp³

-

TObject - TPersistent - TComponent - -TSakuraSeeker

-

ŽQÆ

-

- -TSakuraProcess

-

ŽQlURL

-

TSakuraSeeker‚Í‚±‚ê‚ç‚ÌŽd—l‚ðŽQl‚É‚µ‚Đ݌v‚³‚ê‚Ä‚¢‚Ü‚·B

-

Žf‚©cƒƒ‚ƒŠƒIƒuƒWƒFƒNƒg
- -http://sakura.wondernet.tv/objects.html

-

SSP‹ZpŽ‘—¿cFMOŠÖ˜A‚ÌŽ‘—¿
- -http://ssp.shillest.net/docs/fmo.html

-

Šî–{‚ÌŽg‚¢•û

-

‹N“®’†‚̃S[ƒXƒg–¼‚ð—ñ‹“‚·‚é

-

procedure Button1Click(Sender: TObject);
-var i: integer;
-begin
-  with SakuraSeeker1 do
-  begin
-    BeginDetect;
-    for i := 0 to Count-1 do
-      ShowMessage('Name:' + Process[i].SetName + #13#10 -+
-        'HWND:'+ IntToStr(Process[i].HWnd));
-  end;
-end;

-

u‚³‚­‚çv‚Æ‚¢‚¤–¼‘O‚̃S[ƒXƒg‚ðŒŸõ‚µ‚ăEƒBƒ“ƒhƒEƒnƒ“ƒhƒ‹(DirectSSTP—p)‚𓾂é

-

with SakuraSeeker1 do
-begin
-  BeginDetect;
-  if ProcessByName['‚³‚­‚ç'] <> nil then
-    Handle := ProcessByName['‚³‚­‚ç'].HWnd;
-end;

-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒƒ\ƒbƒh

-
-
procedure BeginDetect;
-
ÅV‚ÌFMO‚ɃAƒNƒZƒX‚µ‚Ä’†g‚ð‰ðÍ‚µAó‘Ô‚ð•ÛŽ‚µ‚Ü‚·BCountƒvƒƒpƒeƒB‚ªXV‚³‚ê‚Ü‚·B
- ÅV‚ÌFMOó‘Ô‚ª•K—v‚È‚Æ‚«A’¼‘O‚ɌĂñ‚Å‚­‚¾‚³‚¢B‚½‚¾‚µFMO‚ÍŽž‚É100KB’´‚É’B‚·‚邱‚Æ‚à‚ ‚è‚Ü‚·‚̂ŁA‚ ‚Ü‚è•p”ɂɌĂт·‚¬‚é‚Ì‚àl‚¦•¨‚Å‚·B
-
function KillFMO(const TargetFMOName, TargetID: String): boolean;
-
FMO‚©‚çŽw’è‚̃vƒƒZƒXID‚ðŽ‚Â‚·‚ׂẴGƒ“ƒgƒŠ‚ðíœ‚µ‚Ü‚·BMutexƒIƒuƒWƒFƒNƒg‚É‚æ‚é”r‘¼§Œä‚Ì–â‘è‚ɑΉž‚µ‚Ä‚¢‚Ü‚·B
- TargetFMOName‚É‚ÍFMOŽ¯•Ê–¼(’ʏí‚́uSakurav)‚ðATargetID‚ɂ̓vƒƒZƒXID(MD5’l‚È‚Ç)‚ð“n‚µ‚Ü‚·B
- ƒGƒ“ƒgƒŠ‚ðíœ‚µ‚½ê‡‚Étrue‚ª•Ô‚è‚Ü‚·BŽw’肵‚½‚à‚Ì‚ª‘¶Ý‚µ‚È‚¢ê‡‚âA‚»‚Ì‘¼‚̃Gƒ‰[‚ª”­¶‚µ‚½ê‡‚É‚Ífalse‚ª•Ô‚è‚Ü‚·B
-
-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒvƒƒpƒeƒB

-
-
property Count: integer;
-
ŽÀsŽž‚̂݁A“Ç‚ÝŽæ‚èê—p‚Å‚·BBeginDetect‚ÌŒã‚ɈӖ¡‚ðŽ‚¿‚Ü‚·B”­Œ©‚³‚ꂽƒvƒƒZƒX‚̐”‚ðŽæ“¾‚µ‚Ü‚·BProcessƒvƒƒpƒeƒB‚ɃAƒNƒZƒX‚·‚éê‡‚Ì“Y‚¦Žš‚̏ãŒÀ‚Æ‚µ‚ÄŽg—p‚µ‚Ü‚·B
-
property Process[Index: integer]: - TSakuraProcess; default;
-
ŽÀsŽž‚̂݁A“Ç‚ÝŽæ‚èê—p‚Å‚·BŒ©‚‚©‚Á‚½‡‚ÉTSakuraProcess‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚µ‚Ü‚·B
-
property ProcessByName[Name: String]: - TSakuraProcess;
- property ProcessBySetName[Name: String]: - TSakuraProcess;
- property ProcessByID[ID: String]: TSakuraProcess;
-
ŽÀsŽž‚̂݁A“Ç‚ÝŽæ‚èê—p‚Å‚·B‚»‚ꂼ‚êATSakuraProcess‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŒŸõ‚µ‚Ä•Ô‚µ‚Ü‚·B
- ProcessByName‚Íname‚ðƒL[‚ÉŒŸõ‚µ‚Ü‚·(—áu‚³‚­‚çv)B“¯‚¶–¼‘O‚Ì‚à‚Ì‚ª2‚ˆȏ゠‚éê‡‚ɂ͍ŏ‰‚ÉŒ©‚‚©‚Á‚½‚à‚Ì‚ª•Ô‚è‚Ü‚·B
- ProcessBySetName‚Íname,keroname‚Ì‘g‚ðƒL[‚É‚µ‚Ü‚·BƒRƒ“ƒ}‚Å‹æØ‚è‚Ü‚·(—áu‚³‚­‚ç,‚¤‚ɂイv)B“¯‚¶–¼‘O‚Ì‚à‚Ì‚ª2‚ˆȏ゠‚éê‡‚ɂ͍ŏ‰‚ÉŒ©‚‚©‚Á‚½‚à‚Ì‚ª•Ô‚è‚Ü‚·B
- ProcessByID‚̓vƒƒZƒXID‚ðƒL[‚É‚µ‚Ü‚·B(–{—ˆ‚ÌŽd—l‚Å‚ÍMD5’l‚Å‚·‚ªA‰½‚ç‚©‚̃†ƒj[ƒN‚È•¶Žš—ñ‚ª“ü‚è‚Ü‚·)
-
property AutoDetect: boolean;
-
ƒRƒ“ƒ|[ƒlƒ“ƒg‚̐¶¬Žž‚ÉŽ©“®“I‚ÉBeginDetect‚·‚é‚©‚Ç‚¤‚©‚ðÝ’肵‚Ü‚·B
-
property FileMappingTarget: TStrings;
-
FMOŽ¯•Ê–¼‚ðÝ’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚́uSakurav‚Å‚·B•¡”‚ÌŽ¯•Ê–¼‚ð—ñ‹“‚·‚邱‚Æ‚ª‚ŁA‚»‚̏ꍇ‚É‚ÍBeginDetect‚Å‚·‚ׂĂª‡‚ɉðÍ‚³‚ê‚Ü‚·B
-
-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒCƒxƒ“ƒg

-
-
property OnGetMutexName: TSakuraSeekerGetMutexNameEvent;
-
TSakuraSeekerGetMutexNameEvent = procedure (Sender: TObject; var - Name: String) of object;
- ”r‘¼§Œä—p‚̃~ƒ…[ƒeƒbƒNƒXƒIƒuƒWƒFƒNƒg‚Ì–¼‘O‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚邽‚߂̃Cƒxƒ“ƒg‚Å‚·BNameƒpƒ‰ƒ[ƒ^‚ɁA‚±‚ê‚©‚ç‰ðÍ‚µ‚悤‚Æ‚·‚éFMO‚ÌŽ¯•Ê–¼‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚Å(FileMappingTarget‚ðƒJƒXƒ^ƒ}ƒCƒY‚µ‚È‚¢ŒÀ‚è‚́uSakurav‚Å‚·)A‚»‚ÌFMO‚ð•ÛŒì‚·‚邽‚ß‚ÌMutexŽ¯•Ê–¼‚ðAName‚É‘ã“ü‚µ‚ďI—¹‚µ‚Ä‚­‚¾‚³‚¢(Šî–{“I‚ɂ́uSakuraFMOv)B‚±‚̃Cƒxƒ“ƒg‚ðŽw’肵‚È‚¢ê‡‚́AuSakuraFMOv‚Æ‚¢‚¤‚悤‚ɁAFMOŽ¯•Ê–¼‚ɁuFMOv‚ª•t‚¢‚½‚à‚Ì‚ðMutexŽ¯•Ê–¼‚Æ‚µ‚Ä—˜—p‚µ‚Ü‚·(•W€‚Ì“®ì‚Å‚·)B
- ˆê‰žƒCƒxƒ“ƒg‚Æ‚µ‚ÄŽÀ‘•‚µ‚Ä‚ ‚è‚Ü‚·‚ªA‚±‚ê‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚é‚ƁAMutex‚ð—˜—p‚·‚éˆÓ–¡Ž©‘Ì‚ª‚È‚­‚È‚è‚Ü‚·‚̂ŁA–{“–‚ɈӖ¡‚ª•ª‚©‚Á‚Ä‚¢‚āA•K—v‚ª‚ ‚éê‡‚Ì‚Ý’è‹`‚µ‚Ä‚­‚¾‚³‚¢B
-
property OnAfterDetection: TNotifyEvent;
-
BeginDetectI—¹Œã‚ɌĂ΂ê‚Ü‚·B
-
property OnDetectResultChanged: TNotifyEvent;
-
BeginDetect‚ÌŒãA‚»‚̉ðÍŒ‹‰Ê‚ª‘O‰ñ‚ÌŒ‹‰Ê‚ƈá‚Á‚Ä‚¢‚½ê‡‚ɌĂ΂ê‚Ü‚·B‚±‚̃Cƒxƒ“ƒg‚ɉž‚¶‚āAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Rƒ“ƒgƒ[ƒ‹‚ð‘‚«Š·‚¦‚½‚èAƒ†[ƒU‚ɃvƒƒZƒX‚Ì‹N“®EI—¹‚ð’Ê’m‚µ‚½‚è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
- FileMappingTarget‚ÅŽw’肳‚ê‚é‚¢‚¸‚ê‚©‚ÌFMO‚Ì’†g‚ª1ƒoƒCƒg‚Å‚à•Ï‚í‚Á‚Ä‚¢‚½ê‡‚ɌĂ΂ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BƒT[ƒtƒBƒX”ԍ†‚𖈕b‚̂悤‚ÉFMO‚É“o˜^‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚ ‚è‚Ü‚·‚̂ŁAƒvƒƒZƒX‚̐”‚â‹N“®‚µ‚Ä‚¢‚éƒS[ƒXƒg‚É‘S‚­•Ï‰»‚ª‚È‚­‚Ä‚à‚±‚ꂪŒÄ‚΂ê‚邱‚Æ‚ª‚ ‚è‚Ü‚·B
-
-

‰ü”Å—š—ð

-
-
2003/04/18
-
MutexƒIƒuƒWƒFƒNƒg‚É‚æ‚éAFMO‚Ì“¯ŽžƒAƒNƒZƒX”r‘¼§ŒäB
-
- - - - diff --git a/sakurasuite/manual/sakurasuite.css b/sakurasuite/manual/sakurasuite.css deleted file mode 100644 index 3ce9028..0000000 --- a/sakurasuite/manual/sakurasuite.css +++ /dev/null @@ -1,12 +0,0 @@ -body { background-color: white; margin-left: 2em; font-family: monospace; } -p { font-size: 10.5pt; margin-top: 0.5em; margin-bottom: 0.5em; } -li, dd, dt, td, th { font-size: 10.5pt; } -dt { font-weight: bolder; margin-top: 1em; margin-bottom: 0.3em; } -h1 { text-align: center; } -h2 { color: navy; text-decoration: underline; margin-left: -1em; } -h3 { color: navy; margin-left: -1em;} - -code { color: green; font-size: 100%; } - -strong { color: red; text-decoration: underline; font-weight: bolder; } -em { color: red; font-style: normal;} \ No newline at end of file diff --git a/sakurasuite/manual/slpp20.html b/sakurasuite/manual/slpp20.html deleted file mode 100644 index 33e6e40..0000000 --- a/sakurasuite/manual/slpp20.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - -V‚µ‚¢ƒy[ƒW 1 - - - - - -

TIdSlpp20

-

ŠT—v

- -

SSTP BottleƒT[ƒrƒX(http://bottle.mikage.to/)‚ɐڑ±‚µ‚ăƒbƒZ[ƒW‚ðŽóM‚·‚邽‚߂̃Rƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B

- -

SLPP/2.0ƒvƒƒgƒRƒ‹‚ɑΉž‚µ‚Ä‚¢‚Ü‚·B

- -

‚½‚¾‚µSSTP BottleƒT[ƒrƒX‚́AƒƒbƒZ[ƒW‚ðŽóM‚·‚邽‚߂̐ڑ±(‰i‘±“I‚ÈSLPP/2.0)‚ƁAƒNƒ‰ƒCƒAƒ“ƒg‘¤‚©‚çƒRƒ}ƒ“ƒh‚𑗐M‚·‚邽‚߂̐ڑ±(’f‘±“I‚ȁA’P‚È‚éHTTP)‚Ì2Ží—Þ‚©‚ç‚È‚è‚Ü‚·‚̂ŁA‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒg’P‘̂ł̐ڑ±‚Í‚Å‚«‚Ü‚¹‚ñB

- -

SSTP Bottle‚ÌŽd—lÚ×‚ɂ‚¢‚ẮAŒöŽ®ƒTƒCƒg‚ÌŽd—l‘ƒy[ƒW‚ð‚²——‚­‚¾‚³‚¢B

- - - - diff --git a/sakurasuite/manual/ssparser.html b/sakurasuite/manual/ssparser.html deleted file mode 100644 index 34473bc..0000000 --- a/sakurasuite/manual/ssparser.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - -V‚µ‚¢ƒy[ƒW 0 - - - - - -

TSsParser

-

ŠT—v

-

-u‚³‚­‚çƒXƒNƒŠƒvƒgv‚Ì‘½‹@”\ƒp[ƒT‹@”\‚ðŽ‚Â”ñƒrƒWƒ…ƒAƒ‹ƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B’Pˆês‚Ì‚³‚­‚çƒXƒNƒŠƒvƒg‚ðˆ—‚µ‚Ü‚·B‚‚܂è“TŒ^“I‚É‚Í\t‚©‚çŽn‚Ü‚è\e‚ŏI‚í‚éA1s‚̃XƒNƒŠƒvƒg‚Å‚·BEntry‚È‚Ç‚ª—‚ñ‚¾•¡”sƒXƒNƒŠƒvƒg‚ɂ͑Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñ‚ªA•â•‚Æ‚µ‚Ä‚ÍŽg‚¦‚Ü‚·B

-
    -
  • “ÆŽ©‚ÌSSTPƒT[ƒo‚ð\’z‚·‚éê‡‚̕⏕
  • -
  • ‚³‚­‚çƒXƒNƒŠƒvƒg‚̃GƒfƒBƒ^ì¬‚Ì‚½‚߂̕⏕(F•ª‚¯Aƒ^ƒOƒ`ƒFƒbƒNAetc...)
  • -
-

‚Æ‚¢‚Á‚½—p“r‚Ì—¼•û‚ÉŽg‚¦‚é‚悤ÝŒv‚³‚ê‚Ä‚¢‚Ü‚·B‚Ü‚½Aƒ^ƒO‚̃pƒ^[ƒ“‚ɂ‚¢‚Ä‚ÍŠ®‘S‚ɃJƒXƒ^ƒ}ƒCƒY‚ª‰Â”\‚Å‚·B

-

Šî–{“I‚ÈŽg‚¢•û

-

TagPattern, MetaPatternƒvƒƒpƒeƒB‚ɁA‚³‚­‚çƒXƒNƒŠƒvƒg‚̉ðÍ‚̊‚Æ‚È‚éƒpƒ^[ƒ“‚ðŽw’肵‚Ü‚·B“Y•t‚³‚ê‚Ä‚¢‚éƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ðƒRƒs[‚·‚ê‚ΈꉞOK‚Å‚·B

-

InputStringƒvƒƒpƒeƒB‚ɁAƒXƒNƒŠƒvƒg‚ðŽw’è‚·‚ê‚΁AƒXƒNƒŠƒvƒg‚ª‰ðÍ‚³‚êACount, -MarkUpType, Str‚ÌŠeƒvƒƒpƒeƒB‚ð’Ê‚µ‚ăAƒNƒZƒX‚Å‚«‚Ü‚·B

-

—Ⴆ‚΁Au\t\s[0]‚¢‚ç‚Á‚µ‚á‚¢%‚Ü‚¹A%username‚³‚ñA\s[5]\\300‚Ì‚¨\”ƒ‚¢ã‚°‚É‚È‚è‚Ü‚·‚Ë\ev‚Æ‚¢‚¤•¶Žš—ñ‚ðInputString‚É“ü‚ꂽê‡‚ɂͤCount=10‚Æ‚È‚èAMarkUpType, -StrƒvƒƒpƒeƒB‚ɂ͈ȉº‚̂悤‚È’l‚ª“ü‚è‚Ü‚·B

-

TSsParser‚ł́AIndex‚Å‹æ•Ê‚³‚ê‚éƒXƒNƒŠƒvƒg‘f•ÐA‚‚܂艺‚Ì•\‚É‚¨‚¯‚éŠes‚ðuƒ}[ƒNƒAƒbƒvv‚ƌĂԂ±‚Æ‚É‚µ‚Ü‚·B(–{—ˆAƒ^ƒO‚⃁ƒ^•¶ŽšˆÈŠO‚Ì•¶Žš—ñ‚܂Ń}[ƒNƒAƒbƒv‚ƌĂԂ͕̂ςł·‚ªc)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IndexStr[Index]MarkUpType[Index]
0\tmtTag
1\s[0]mtTag
2‚¢‚ç‚Á‚µ‚á‚¢%‚Ü‚¹A¦mtStr
3%usernamemtMeta
4‚³‚ñAmtStr
5\s[5]mtTag
6\\300‚Ì‚¨¦mtStr
7\”ƒmtTagErr
8‚¢ã‚°‚É‚È‚è‚Ü‚·‚ËmtStr
9\emtTag
-
    -
  • - ‚±‚ê‚̓fƒtƒHƒ‹ƒg‚̃pƒ^[ƒ“‚ðŽg—p‚µ‚½“TŒ^“I‚ȉðÍ‚ÌŒ‹‰Ê‚Å‚ ‚èA‰ðÍŒ‹‰Ê‚̓pƒ^[ƒ“‚É‚æ‚Á‚ĕω»‚µ‚Ü‚·B‹É’[‚ÉŒ¾‚¦‚΁A\w8‚ðƒ^ƒO‚Æ‚µ‚Ä”FŽ¯‚µ‚È‚¢A‚Æ‚¢‚¤‚±‚Æ‚à‰Â”\‚Å‚·B
  • -
  • Str[2]‚ɂ‚¢‚ẮAEscapeInvalidMeta = - false‚̏ꍇ‚ÌŒ‹‰Ê‚Å‚·Btrue‚̏ꍇ‚́Au‚¢‚ç‚Á‚µ‚á‚¢\%‚Ü‚¹v‚Æ‚È‚è‚Ü‚·B
  • -
  • Str[6]‚ɂ‚¢‚ẮALeaveEscape = - true‚̏ꍇ‚ÌŒ‹‰Ê‚Å‚·Bfalse‚̏ꍇ‚́Au\300‚Ì‚¨v‚Æ‚È‚è‚Ü‚·B
  • -
-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒvƒƒpƒeƒB

-
-
LeaveEscape: boolean [ŽÀ/Ý][“Ç/‘]
-
ƒfƒtƒHƒ‹ƒg‚Ítrue‚Å‚·BmtStr‚Ő؂èo‚³‚ꂽ’ʏ핶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éA\\ ‚â \% - ‚Ì•¶Žš—ñ‚ð•ÏŠ·‚¹‚¸‚ÉŽc‚·‚©‚Ç‚¤‚©Ý’肵‚Ü‚·Bfalse‚É‚·‚邱‚ƂŁA\\ ‚â \% ‚Í1•¶Žš‚É•ÏŠ·‚³‚ê‚ÄmtStrƒ}[ƒNƒAƒbƒv‚É‘ã“ü‚³‚ê‚Ü‚·B
- TSsParser‚ðƒXƒNƒŠƒvƒg‚̐F•ª‚¯‚âAŠëŒ¯ƒ^ƒOƒ`ƒFƒbƒN‚È‚Ç‚ÉŽg—p‚·‚éê‡‚́A•¶Žš—ñ’·‚âƒXƒNƒŠƒvƒg‚»‚Ì‚à‚Ì‚ª•Ï‚í‚ç‚È‚¢‚悤‚Étrue‚É‚µ‚Ü‚·B“ÆŽ©SSTPƒT[ƒoŠJ”­‚̏ꍇ‚Ȃǂ́Afalse‚É‚·‚邱‚Æ‚Å•ÏŠ·‚ÌŽèŠÔ‚ðÈ‚¯‚Ü‚·B
- •ÏX‚µ‚½ê‡A‚»‚ÌŒ‹‰Ê‚ÍŽŸ‰ñ‚̉ðÍ‚©‚甽‰f‚³‚ê‚Ü‚·B
-
EscapeInvalidMeta: boolean [ŽÀ/Ý][“Ç/‘]
-
ƒfƒtƒHƒ‹ƒg‚Ífalse‚Å‚·BMetaPattern‚É‚æ‚Á‚āA%•¶ŽšˆÈ~‚ªƒƒ^•¶Žš—ñ‚Æ”»’f‚Å‚«‚È‚¢ê‡A%•¶Žš‚ðu\%v‚ɃGƒXƒP[ƒv‚·‚é‚©‚Ç‚¤‚©Ý’肵‚Ü‚·B
- TSsParser‚ðƒXƒNƒŠƒvƒg‚̐F•ª‚¯‚È‚Ç‚ÉŽg—p‚·‚éê‡‚́A•¶Žš—ñ’·‚ª•Ï‚í‚ç‚È‚¢‚悤‚Éfalse‚É‚µ‚Ü‚·BŒ˜˜S‚ȃXƒNƒŠƒvƒgì¬‚Ì‚½‚ß‚Ì•¶–@ƒ`ƒFƒbƒN‚Ì‚½‚ß‚É‚Ítrue‚É‚µ‚Ü‚·B
- •ÏX‚µ‚½ê‡A‚»‚ÌŒ‹‰Ê‚ÍŽŸ‰ñ‚̉ðÍ‚©‚甽‰f‚³‚ê‚Ü‚·B
-
TagPattern: TStrings [ŽÀ/Ý][“Ç/‘]
- MetaPattern: TStrings [ŽÀ/Ý][“Ç/‘]
-
- ‚»‚ꂼ‚êAƒ^ƒOØ‚èo‚µ‚Ì‚½‚߂̃pƒ^[ƒ“Aƒƒ^•¶Žš—ñØ‚èo‚µ‚Ì‚½‚߂̃pƒ^[ƒ“‚Å‚·B•Ê€uƒpƒ^[ƒ“‚ɂ‚¢‚āvŽQÆB•ÏX‚µ‚½ê‡A‚»‚ÌŒ‹‰Ê‚ÍŽŸ‰ñ‚̉ðÍ‚©‚甽‰f‚³‚ê‚Ü‚·B
-
InputString: String [ŽÀ‚Ì‚Ý][“Ç/‘]
-
‚±‚̃vƒƒpƒeƒB‚ɏ‘‚«ž‚ñ‚ŁA‰ðÍ‚·‚ׂ«ƒXƒNƒŠƒvƒg‚ðÝ’肵‚Ü‚·B“ǂݏo‚µ‚̏ꍇ‚͍Ōã‚ɉðÍ‚µ‚½ƒXƒNƒŠƒvƒg‚ª“ü‚Á‚Ä‚¢‚Ü‚·B
-
Count: integer [ŽÀ‚Ì‚Ý][“Ç‚Ì‚Ý]
-
ƒXƒNƒŠƒvƒg‰ðÍŒã‚̃}[ƒNƒAƒbƒv‘”‚ð•Ô‚µ‚Ü‚·BƒXƒNƒŠƒvƒgƒ}[ƒNƒAƒbƒv‚ðƒ‹[ƒvˆ—‚·‚éê‡‚̏ãŒÀ’l‚Æ‚µ‚ÄŽg—p‚µ‚Ü‚·B
-
Str[Index: integer]: String [ŽÀ‚Ì‚Ý][“Ç‚Ì‚Ý]
-
‰ðÍŒã‚Ì•¶Žš—ñ‚ð•Ô‚µ‚Ü‚·BÅ‰‚̃}[ƒNƒAƒbƒv‚ÍStr[0]AÅŒã‚̃}[ƒNƒAƒbƒv‚ÍStr[Count-1]‚Å‚·BLeaveExcape, - EscapeInavlidMeta‚Ì—¼ƒvƒƒpƒeƒB‚̉e‹¿‚ðŽó‚¯‚Ü‚·B
-
Extra[Index: integer]: String [ŽÀ‚Ì‚Ý][“Ç/‘]
-
‚²Ž©—R‚É‚¨Žg‚¢‚­‚¾‚³‚¢A‚Ì•¶Žš—ñ‚Å‚·B‰ðÍŒ‹‰Ê‚Ƀƒ‚‚ð‚‚¯‚½‚è‚·‚é—p“r‚É‚Ç‚¤‚¼B
-
MarkUpType[Index: integer]: TSsMarkUpType [ŽÀ‚Ì‚Ý][“Ç‚Ì‚Ý]
-
type TSsMarkUpType = (mtTag, mtMeta, mtTagErr, mtStr);
-
ƒ}[ƒNƒAƒbƒv‚ÌŽí—Þ‚ð•Ô‚µ‚Ü‚·BÅ‰‚̃}[ƒNƒAƒbƒv‚ÍMarkUpType[0]AÅŒã‚̃}[ƒNƒAƒbƒv‚ÍMarkUpType[Count-1]‚Å‚·B
-
-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒCƒxƒ“ƒg

-
-
OnSsParse: TSsParseEvent
-
-

TSsParseEvent = procedure (Sender: TObject; const Script: - String;
- var Len: integer; var MarkType: TSsMarkUpType; var Extra: String) of object;
-
ƒ^ƒO‚Ü‚½‚̓ƒ^•¶Žš—ñ‚̃pƒ^[ƒ“ƒ}ƒbƒ`ŽŽs‚Ì‘O‚ɌĂяo‚³‚ê‚Ü‚·B‚±‚̃Cƒxƒ“ƒg‚ðŽg—p‚·‚é‚ƁATagPattern, - MetaPattern‚ÌŽd—l‚ł͐؂èo‚¹‚È‚¢ƒ}[ƒNƒAƒbƒv‚ª«—ˆ‚Å‚«‚½ê‡‚ɁAƒXƒNƒŠƒvƒg‚©‚ç‚̃^ƒO‚⃁ƒ^•¶Žš—ñ‚̐؂èo‚µ‚ðŽ©—R‚ɃR[ƒfƒBƒ“ƒO‚Å‚«‚Ü‚·B
- Script‚͉ðÍ“r’†‚̃XƒNƒŠƒvƒg‚Å‚·B1•¶Žš–Ú‚Í•K‚¸u\v‚Ü‚½‚́u%v‚Æ‚È‚Á‚Ä‚¢‚Ü‚·BLen‚͌Ăяo‚µŽž‚É‚Í0‚ª‘ã“ü‚³‚ê‚Ä‚¢‚Ü‚·B
- ‚±‚̃Cƒxƒ“ƒgƒnƒ“ƒhƒ‰“à‚ŁAScript‚̐擪‚©‚çŽn‚Ü‚é•”•ª‚ð‰ðÍ‚µ‚Ü‚·Bƒ}[ƒNƒAƒbƒv‚ð‰ðŽß‚Å‚«‚½ê‡‚Í‚»‚̃}[ƒNƒAƒbƒv‚Ì’·‚³(ƒoƒCƒg”)‚ðLen(>2)‚ɁAƒ^ƒCƒv‚ðMarkType‚ɁA•K—v‚È‚çExtra‚É•¶Žš—ñ‚ð“ü‚ê‚āAƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ðI—¹‚µ‚Ä‚­‚¾‚³‚¢B‰ðŽß‚Å‚«‚È‚¢ê‡‚ÍLen=0‚̂܂܏I—¹‚·‚ê‚΁A‚»‚̂܂ܒʏí‚̃pƒ^[ƒ“ƒ}ƒbƒ`ŽŽs‚É“ü‚è‚Ü‚·B
- —v‚́A•¶Žš—ñæ“ª‚©‚炱‚±‚Ü‚Å‚ªƒ^ƒO(ƒƒ^•¶Žš—ñ)‚¾‚æA‚Æ‚¢‚¤‚Ì‚ðŒ©‚Â‚¯‚Ä•Ô‚µ‚Ä‚­‚êA‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
- Len>1‚Å‚ ‚Á‚Ä‚àAScript‚Ì1•¶Žš–Ú‚ª\‚È‚Ì‚ÉMarkUpType‚ªmtTag‚Å‚àmtTagErr‚Å‚à‚È‚¢ê‡A‚ ‚é‚¢‚ÍScript‚Ì1•¶Žš–Ú‚ª%‚È‚Ì‚ÉMarkUpType‚ªmtMeta‚Å‚È‚¢ê‡‚Í—áŠO‚ª”­¶‚µ‚Ü‚·B

-
-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒƒ\ƒbƒh

-
-
function Match(Str, Pattern: String): integer;
-
SSTP‰ðÍ—p‚̃pƒ^[ƒ“ƒ}ƒbƒ`ƒ“ƒO‚ðs‚¢‚Ü‚·BStr‚̐擪•”•ªAPattern‚ÅŽ¦‚³‚ê‚éƒpƒ^[ƒ“‚ª‘¶Ý‚·‚ê‚΁Aƒ}ƒbƒ`‚µ‚½•”•ª‚̃oƒCƒg”(•¶Žš”‚Å‚Í‚È‚¢)‚ð•Ô‚µ‚Ü‚·Bƒ}ƒbƒ`ƒ“ƒO‚ªŽ¸”s‚µ‚½ê‡‚Í0‚ð•Ô‚µ‚Ü‚·B
- —Ⴆ‚΁A
- Match('ABC', 'AB') = 2
- Match('ABC', 'A%.%.') = 3
- Match('A20BC', 'A%D') = 3
- Match('\s[20]', '\s%b') = 6
- Match('\s2', '\s%b') = 0
-
function MatchP(PStr, PPattern: PChar): integer;
-
- Match‚ÆŠî–{“I‚É“¯‹@”\‚Å‚·‚ªAˆø”‚É•¶Žšƒ|ƒCƒ“ƒ^‚ðŽg—p‚µ‚Ü‚·B•s•K—v‚È•¶Žš—ñ‚̃Rƒs[‚ª”ð‚¯‚ç‚ê‚邽‚߁AŒJ‚è•Ô‚µŒÄ‚ԏꍇ‚âA‚Æ‚ ‚镶Žš—ñ‚Ì“r’†‚©‚ç‰ðÍ‚µ‚½‚è‚·‚éê‡‚ɂ͍‚‘¬‚Å‚·B
-
function MarkUpAt(const Pos: integer): integer;
-
PosƒoƒCƒg–Ú(Pos•¶Žš–Ú‚Å‚Í‚ ‚è‚Ü‚¹‚ñ)‚É‚ ‚éƒ}[ƒNƒAƒbƒv‚̃Cƒ“ƒfƒbƒNƒX‚ð•Ô‚µ‚Ü‚·B
-
function GetParam(Tag: String; const Index: integer): String;
-
\s[3] ‚â \_c[‚±‚ñ‚É‚¿‚Í] , \q1[#cancel][ƒLƒƒƒ“ƒZƒ‹] - ‚Æ‚¢‚Á‚½ƒ}[ƒNƒAƒbƒv‚©‚çAƒXƒNƒEƒFƒAƒuƒ‰ƒPƒbƒg‚Ɉ͂܂ꂽƒpƒ‰ƒ[ƒ^‚ðŽæ‚èo‚µ‚Ü‚·BTag‚ÍŽæ‚èo‚µ‚½‚¢ƒ^ƒO‘S‘́AIndex‚͉½”Ԗڂ̃pƒ‰ƒ[ƒ^‚ðŽæ‚èo‚·‚©A‚ŁA1‚©‚çŽn‚Ü‚è‚Ü‚·B\\ - ‚â \] ‚É‚æ‚éƒGƒXƒP[ƒv‚ɑΉž‚µA‚±‚ê‚ç‚̃GƒXƒP[ƒv‚ÍŽ©“®“I‚ÉŒ³‚ÌŒ`‚É–ß‚³‚ê‚Ü‚·B
- Index‚ªƒ[ƒˆÈ‰º‚̏ꍇAƒpƒ‰ƒ[ƒ^‚ªŽæ‚èo‚¹‚È‚©‚Á‚½ê‡‚Ȃǂɂ́A‹ó•¶Žš—ñ‚ª•Ô‚è‚Ü‚·B
- GetParam('\s[3]', 1) = '3';
- GetParam('\s[3]', 2) = '';
- GetParam('\j[http://www.yahoo.co.jp/index[1\].html]', 1) = 'http://www.yahoo.co.jp/index[1].html'
-
function EscapeParam(const Param: String): String;
-
\j[] ‚Ì’†‚ɈÀ‘S‚É‘ã“ü‚Å‚«‚é‚悤‚ɁA\ ‚ð \\ ‚ɁA] ‚ð - \] ‚É•ÏŠ·‚µ‚½•¶Žš—ñ‚ð•Ô‚µ‚Ü‚·BŒ˜˜S‚ȃXƒNƒŠƒvƒgì¬‚Ì‚½‚߂ɂ͐¥”ñ—˜—p‚·‚é‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B
-
-

ƒpƒ^[ƒ“‚ɂ‚¢‚Ä

-

TagPattern, MetaPatternƒvƒƒpƒeƒB‚ɁA‚³‚­‚çƒXƒNƒŠƒvƒg‚ð‰ðÍ‚·‚é‚Æ‚«‚̃pƒ^[ƒ“‚ðŽw’肵‚Ü‚·B

-

-ƒA[ƒJƒCƒu“¯«‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚©‚çƒRƒs[‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·‚ªA«—ˆ‚̃^ƒOŠg’£“™‚Ì‚½‚ß‚É‚±‚ÌŽd—l‚ª‘¶Ý‚µ‚Ü‚·B‚±‚̃pƒ^[ƒ“ƒŠƒXƒgŽ©g‚ðƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚È‚Ç‚©‚ç“ǂݍž‚ނ悤‚É‚·‚邱‚ƂŁAŽÀsƒtƒ@ƒCƒ‹‚ðXV‚¹‚¸‚Ƀ^ƒO‰ðÍ•”‚Ì‚Ý‚ðXV‚·‚邱‚Æ‚à‰Â”\‚Å‚·B

-

uƒ^ƒO‚ª\‚ÅŽn‚Ü‚évuƒƒ^•¶Žš—ñ‚ª%‚ÅŽn‚Ü‚évu\\‚â\%‚̓GƒXƒP[ƒvv‚È‚Ç‚Æ‚¢‚Á‚½Šî–{“I‚ÈŽd—l‚ª•ÏX‚É‚È‚ç‚È‚¢ŒÀ‚èAƒ^ƒO‚̒ʏí‚Ì‘Œ¸‚ÉŠÖ‚µ‚ẮAPatternƒvƒƒpƒeƒB‚ð•ÏX‚·‚邱‚ƂŁA‘å’ï‘Ήž‚Å‚«‚é‚ÆŽv‚¢‚Ü‚·B“ÁŽê‚ȏ‘‚«•û‚̏ꍇAƒCƒxƒ“ƒg‚ð—˜—p‚·‚é•û–@‚à‚ ‚è‚Ü‚·B

-

ƒpƒ^[ƒ“‚̏‘‚«•ûŠT—ª

-

TagPattern‚ÌŠes‚ªA1‚‚̃^ƒO‚ɉž“š‚·‚éƒpƒ^[ƒ“‚Å‚·B—Ⴆ‚΁Au\ev‚Æ‚¢‚¤s‚ðTagPatternƒvƒƒpƒeƒB‚ɒljÁ‚·‚邱‚ƂŁAu\ev‚Æ‚¢‚¤ƒ^ƒO‚É”½‰ž‚Å‚«‚é‚悤‚É‚È‚èAu!_cv‚Æ‚¢‚¤s‚ð’ljÁ‚·‚ê‚΁Au\_cv‚Æ‚¢‚¤ƒ^ƒO‚̓Gƒ‰[‚Å‚ ‚éA‚ƉðÍ‚·‚é‚悤‚É‚È‚è‚Ü‚·B

-

-(‚±‚̂悤‚ɃGƒ‰[‚É‚È‚Á‚½ƒ^ƒO‚𖳎‹‚·‚é‚Ì‚©A‚ ‚é‚¢‚Í‚Ç‚¤ˆ—‚·‚é‚Ì‚©‚Ç‚¤‚©‚Ȃǂɂ‚¢‚ẮA‰ðÍŽÒ‚ÌŽÀ‘•‚É‚©‚©‚Á‚Ä‚¢‚Ü‚·BTSsParser‚ł́A‚»‚̃^ƒO‚ðƒGƒ‰[‚Æ‚µ‚Ä‘®«‚¯‚邾‚¯‚Å‚·B)

-

ƒpƒ^[ƒ“‚͏ォ‚珇”Ô‚ÉŽŽs‚³‚êAƒ}ƒbƒ`‚µ‚½Žž“_‚ÅŽŽs‚𒆎~‚µ‚Ü‚·B

-

TagPattern‚ÌŠes‚́A\‹L†‚Ü‚½‚Í!‹L†‚ÅŽn‚ß‚Ä‚­‚¾‚³‚¢B\‹L†‚ÅŽn‚Ü‚éƒpƒ^[ƒ“‚́Aƒ}ƒbƒ`‚µ‚½ê‡‚»‚ê‚𐳓–‚ȃ^ƒO‚ð‚µ‚Äˆ—‚µ‚Ü‚·B!‹L†‚ÅŽn‚Ü‚éƒpƒ^[ƒ“‚́Aƒ}ƒbƒ`‚µ‚½ê‡‚»‚ê‚ðƒ^ƒO‚̃Gƒ‰[‚Æ‚µ‚ďˆ—‚µ‚Ü‚·B

-

—Ⴆ‚΁Au\wvƒ^ƒO‚̏ˆ—‚Ì‚½‚߂ɂ́A

-
-

\w%d
- !w%.

-
-

‚Æ‚¢‚¤2s‚ðTagPattern‚ɉÁ‚¦‚é‚Æ‚æ‚¢‚Å‚µ‚傤B‚±‚ê‚ŁA\w9 “™‚͐³“–‚ȃ^ƒO‚ŁA”ŽšˆÈŠO‚ªw‚ÌŒã‚É‚«‚½ê‡‚Í -\w‚  ‚Æ‚¢‚Á‚½‘S‘Ì‚ðƒ^ƒOƒGƒ‰[‚Æ‚µ‚ďˆ—‚·‚éA‚Æ‚¢‚¤ˆÓ–¡‚É‚È‚è‚Ü‚·B

-

MetaPattern‚ÌŠes‚ªA1‚‚̃ƒ^•¶Žš—ñ‚ɉž“š‚·‚éƒpƒ^[ƒ“‚Å‚·B—Ⴆ‚΁uselfnamev‚Æ‚¢‚¤s‚ðMetaPatternƒvƒƒpƒeƒB‚ɒljÁ‚·‚邱‚ƂŁAu%selfnamev‚Æ‚¢‚¤ƒƒ^•¶Žš—ñ‚É”½‰ž‚µ‚Ü‚·BMetaPattern‚̏ꍇ‚́A%ˆÈ~‚É‘±‚­•¶Žš—ñ‚ð‚»‚Ì‚Ü‚Ü‹Lq‚·‚é‚悤‚ÈŠiD‚Å‘åä•v‚Å‚·B(ƒpƒ^[ƒ“‚àŽg‚¦‚Ü‚·)

-

ƒ}ƒbƒ`ŽŽs‚̓pƒ^[ƒ“ƒŠƒXƒg‚̏ォ‚珇”Ԃɍs‚í‚ê‚邽‚߁AMetaPatternƒvƒƒpƒeƒB‚ŁA—Ⴆ‚Î selfname2 -‚Æ‚¢‚¤s‚Í selfname ‚æ‚èã‚É”z’u‚³‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B

-

ƒpƒ^[ƒ“‚Ì‹Lq•û–@

-

³‹K•\Œ»‚Ý‚½‚¢‚È‚à‚Ì‚Å‚·‚ªA‚»‚±‚܂ō‚‹@”\‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‹t‚ɐ³‹K•\Œ»‚Å‚Í•\Œ»‚µ‚Â炢•\‹L‚ɑΉž‚µ‚Ä‚½‚è‚à‚µ‚Ü‚·‚ªB

-
    -
  • %d ‚Í”CˆÓ‚̐®”1•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B\s%d ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚́A\s0 - ‚â \s3 ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %D ‚Í”CˆÓ‚̐®”—ñ‚ɍŒ·ƒ}ƒbƒ`‚µ‚Ü‚·B\s[%D] ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚́A\s[0] - ‚â \s[10] ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %b ‚Í[]‚ň͂܂ꂽ•¶Žš—ñ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B\] ‚â \\ - ‚É‚æ‚éƒGƒXƒP[ƒv‚ɑΉž‚µ‚Ü‚·B\j%b ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚́A \j[http://www.a.com/index[1\].html] - ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %. ‚Í”CˆÓ‚Ì1•¶Žš(ƒVƒ“ƒOƒ‹ƒoƒCƒgEƒ}ƒ‹ƒ`ƒoƒCƒg–â‚킸)‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %m ‚Í”CˆÓ‚̃Vƒ“ƒOƒ‹ƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %M ‚Í”CˆÓ‚̃}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %% ‚́u%v‹L†‚»‚Ì‚à‚̂Ƀ}ƒbƒ`‚µ‚Ü‚·BŽg—p‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‹@‰ï‚Í‚¨‚»‚ç‚­«—ˆ‚à‚ ‚è‚Ü‚¹‚ñB
  • -
  • %‚Ì’¼Œã‚ªAã‹L‚Ì‚¢‚¸‚ê‚Å‚à‚È‚¢•¶Žš‚Å‚ ‚éê‡A‚Æ‚è‚ ‚¦‚¸ %% ‚Æ‚µ‚ĉðŽß‚µ‚Ü‚·‚ªA‚±‚̂悤‚ÈŽg‚¢•û‚Í‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B
  • -
  • ‚»‚êˆÈŠO‚Ì•¶Žš‚Í‚·‚ׂĂ»‚Ì•¶Žš‚»‚Ì‚à‚̂Ƀ}ƒbƒ`‚µ‚Ü‚·B\‚àŠÜ‚߁B
  • -
-

ƒ}ƒbƒ`ƒ“ƒOÚ×

-

ƒ}ƒbƒ`ƒ“ƒO‚͈ȉº‚̂悤‚ɍs‚í‚ê‚Ü‚·B

-
    -
  1. - ƒ}[ƒNƒAƒbƒv‚ÆŽv‚í‚ê‚éu\v‚Ü‚½‚́u%v‚ðæ“ª‚©‚ç’T‚µ‚Ü‚·Bu\\v‚âu\%v‚̓GƒXƒP[ƒv‚Å‚·‚Ì‚Å“Ç‚Ý”ò‚΂³‚ê‚Ü‚·B‚»‚Ì•”•ª‚܂ł́Aƒ}[ƒNƒAƒbƒv‚Å‚Í‚È‚¢’ʏí‚Ì•¶Žš—ñ‚Å‚·B
  2. -
  3. -

    - u%v‚ðŒ©‚Â‚¯‚½ê‡‚̓ƒ^•¶Žš—ñ‚̉”\«‚ª‚ ‚é‚̂ŁAƒ}ƒbƒ`ƒ“ƒO‚ðŠJŽn‚µ‚Ü‚·B%ˆÈ‰º‚ª—LŒø‚ȃƒ^•¶Žš—ñ‚Æ‚µ‚ĉðŽß‚Å‚«‚È‚¢ê‡‚́Au%v‚͈Ӗ¡‚ð‚È‚³‚È‚¢’ʏí‚Ì%•¶Žš—ñ‚Æ‚µ‚āA\%‚ɃGƒXƒP[ƒv‚³‚ê‚Ä(EscapeInvalidMeta‚Ő§Œä‰Â”\)‘O‚ÌmtStrƒ}[ƒNƒAƒbƒv‚É‚­‚Á‚‚«‚Ü‚·B

  4. -
  5. u\v‚ðŒ©‚Â‚¯‚½ê‡‚̃}ƒbƒ`ƒ“ƒO‚ðŠJŽn‚µ‚Ü‚·B\ˆÈ‰º‚ª³‹K‚̃^ƒO‚Æ‚µ‚ĉðŽß‚Å‚«‚½ê‡‚ÍmtTagƒ^ƒCƒv‚Æ‚µ‚āAƒGƒ‰[ƒ^ƒO‚Æ‚È‚Á‚½ê‡‚ÍmtTagErr‚Æ‚µ‚Đ؂èo‚µ‚Ü‚·BTagPattern‚̂ǂ̍s‚É‚àƒ}ƒbƒ`‚µ‚È‚©‚Á‚½ê‡‚́A\‚ÌŽŸ‚Ì1•¶Žš‚ðŠÜ‚߂āAƒGƒ‰[ƒ^ƒO‚Æ‚µ‚Đ؂èo‚µ‚Ü‚·B
  6. -
  7. Å‰‚É–ß‚è‚Ü‚·B
  8. -
-

Žg—p—á

-

SSTPƒT[ƒo

-

“ÆŽ©SSTPƒT[ƒo\’z•â•‚É—˜—p‚·‚éê‡‚́ALeaveEscape := false; EscapeInvalidMeta := false; -‚Æ‚·‚é‚ÆŠÈ’P‚Å‚·B

-

SsParser1.InputString := Edit1.Text;
-for i := 0 to SsParser1.Count-1 do begin
-  case SsParser.MarkUpType[i] of
-    mtStr: Memo1.Lines.Add(SsParser.Str[i]);
-    mtTag: {ƒ^ƒOŠÖ˜A‚̏ˆ—}
-    mtTagErr: Memo1.Lines.Add(SsParser.Str[i]); //ˆ—‚¹‚¸‚É‚»‚Ì‚Ü‚Ü•\Ž¦
-    mtMeta: {ƒƒ^•¶Žš—ñ•ÏŠ·Œê•\Ž¦}
-  end;
-end;

-

ƒXƒNƒŠƒvƒgF•ª‚¯HTMLì¬

-

F•ª‚¯‚ª–Ú“I‚̏ꍇAƒXƒNƒŠƒvƒg‚ª•Ï‚í‚éS”z‚Ì‚È‚¢‚悤ALeaveEscape := true; EscapeInvalidMeta := -false; ‚Æ‚µ‚Ü‚·B

-

ˆÈ‰º‚́Aƒ^ƒO•”•ª‚ɐF‚ðÝ’è‚·‚éHTMLƒ}[ƒNƒAƒbƒv‚Å‚·B

-

var Html: String;
-//
-SsParser1.InputString := Edit1.Text;
-for i := 0 to SsParser1.Count-1 do begin
-  case SsParser.MarkUpType[i] of
-    mtStr:    Html := Html + SsParser.Str[i];
-    mtTag:    Html := Html + '<font -color="green">' + SsParser.Str[i] + '</font>';
-    mtTagErr: Html := Html + '<font color="red">' + -SsParser.Str[i] + '</font>';
-    mtMeta:   Html := Html + '<font color="blue">' + -SsParser.Str[i] + '</font>';
-  end;
-end;
-Edit2.Text := Html;

-

OnSsParseŽg—p—á

-

ˆÈ‰º‚́AOnSsParseƒCƒxƒ“ƒg‚ÌŽg—p—á‚Å‚·B‚à‚Á‚Æ‚à’Pƒ‚ɁA\uƒ^ƒO‚𔻒肵‚Ü‚·BTagPattern‚Ì1s–Ú‚É \u -‚Ə‘‚¢‚½ê‡‚Æ“¯‚¶“®ì‚Æ‚È‚è‚Ü‚·B

-

procedure TForm1.SsParser1SsParse(Sender: TObject; const Script: -String;
-  var Len: integer; var MarkType: TSsMarkUpType; var Extra: String)
-begin
-  if Pos('\u', Script) = 1 then begin
-    Len := Length('\u');
-    MarkType := mtTag;
-  end;
-end;

-

Žg—p—á - ƒT[ƒtƒBƒX”»’è

-

ˆê”ԍŌã‚̃T[ƒtƒBƒX‚ª‰½‚É‚È‚é‚©‚𔻒肵‚Ü‚·B‚½‚¾‚µ–{—ˆ‚́A\0, -\1‚É‚æ‚éƒXƒR[ƒvØ‚è‘Ö‚¦ˆ—‚âA\_s‚É‚æ‚éƒVƒ“ƒNƒƒiƒCƒYƒhƒZƒbƒVƒ‡ƒ“‚̏ˆ—‚ª•K—v‚Å‚µ‚傤B

-

var Last: integer;
-//
-SsParser1.InputString := Edit1.Text;
-for i := 0 to SsParser1.Count-1 do begin
-  if SsParser.Match(SsParser.Str[i], '\s%b') > 0 then begin
-    try
-      Last := StrToInt(SsParser.GetParam(SsParser.Str[i]));
-    except
-      on EConvertError do
-        ;
-    end;
-  end;
-end;

-

”’ˆÓ

-

Ä‰ðÍ‚ɂ‚¢‚Ä

-

with SsParser1 do InputString := InputString;

-

‚Æ‚·‚邱‚ƂŁAEscapeInvalidMeta“™‚̉ðÍƒIƒvƒVƒ‡ƒ“‚âAMetaPattern“™‚̉ðÍƒpƒ^[ƒ“‚ª•Ï‰»‚µ‚½‚Æ‚«‚ɍĉðÍ‚ðs‚¦‚Ü‚·B•Ï‚ȏ‘‚«•û‚Å‚·‚ªB

-

‰üs•¶Žš‚ɂ‚¢‚Ä

-

InputString‚ɉüs•¶Žš‚â‚»‚Ì‘¼‚Ì‹ó”’•¶Žš‚ªŠÜ‚Ü‚ê‚Ä‚¢‚½ê‡A’ʏí‚Ì•¶Žš‚Æ“¯‚¶‚悤‚Ɉµ‚¢‚Ü‚·B‚‚܂èA‰üs•¶Žš‚¾‚©‚ç‚Æ‚¢‚Á‚Ä“Á‚ɉ½‚ç‚©‚̏ˆ—‚ªs‚í‚ꂽ‚èA‹t‚ɏˆ—‚̎ז‚‚É‚È‚Á‚½‚è‚·‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB‰üs‚ð -\n ‚ɕύX‚µ‚½‚¢A‚Ȃǂ̏ꍇ‚Í‚ ‚ç‚©‚¶‚ß StringReplace ‚È‚Ç‚ð—˜—p‚µ‚ÄŽ©•ª‚Å•ÏŠ·‚µ‚Ä‚­‚¾‚³‚¢B

-

ƒ^ƒOƒGƒ‰[‚Ì—˜—p‚ɂ‚¢‚Ä

-

TagPattern‚ōs“ª‚ª ! ‚ÅŽn‚Ü‚éƒpƒ^[ƒ“‚ðŽw’è‚·‚邱‚Æ‚âAOnSsParseƒCƒxƒ“ƒg‚ÅmtTagErrƒ}[ƒNƒAƒbƒv‚ð•Ô‚·Ž–‚ŁA\‚ÅŽn‚Ü‚é”CˆÓ‚Ì•¶Žš—ñ‚ðƒ^ƒOƒGƒ‰[‚ÆŒ©‚È‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚Ü‚½ATagPattern‚Ń}ƒbƒ`‚µ‚È‚©‚Á‚½ê‡‚́A\‹L†‚ÌŽŸ‚Ì1•¶Žš‚Ü‚Å‚ðŠÜ‚߂ă^ƒOƒGƒ‰[‚Æ‚µ‚Ä2•¶Žš•ªØ‚èo‚µ‚Ü‚·B‚±‚Ì—˜—p•û–@‚Å‚·‚ªA

-
    -
  • ƒXƒNƒŠƒvƒg‚̃`ƒFƒbƒN‚É—˜—p‚·‚éê‡ATagPattern‚ð•ÏX‚·‚鎖‚ŁASSTPŒ ŒÀ‚Å“®‚©‚È‚¢ƒ^ƒO‚̃`ƒFƒbƒN‚ðs‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
  • -
  • - SSTPƒT[ƒo\’z‚̏ꍇAƒGƒ‰[ƒ^ƒO‚Í‚»‚̂܂܃ZƒŠƒt‚Æ“¯‚¶Œ`‚ŏo—Í‚·‚é‚悤‚É‚·‚ê‚΁Aƒ^ƒO‚̃}[ƒNƒAƒbƒvƒGƒ‰[‚ÉŠÖ‚µ‚ď_“î‚È•œ‹A‚ª‚Å‚«‚Ü‚·(ã‚Ì—áŽQÆ)B
  • -
-

‰ü”Å—š—ð

-
-
2003/04/01
-
“à•”‚ð‘‚«’¼‚µ‚āA10”{`100”{‚قǍ‚‘¬‰»BŠJ”­ƒ}ƒVƒ“(PentiumIII - 1GHz)‚ł́A2KB‚Ì’·•¶ƒXƒNƒŠƒvƒg‚ð0.01•bˆÈ“à‚ɉðÍ‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
-
2003/04/03
-
PositionAMarkUpAt‚ð’ljÁB
-
- - - - diff --git a/sakurasuite/manual/ssplaytime.html b/sakurasuite/manual/ssplaytime.html deleted file mode 100644 index 2a10245..0000000 --- a/sakurasuite/manual/ssplaytime.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - -V‚µ‚¢ƒy[ƒW 0 - - - - - -

TSsPlayTime, TSsPlayTimeParams

-

ŠT—v

-

‚³‚­‚çƒXƒNƒŠƒvƒg‚̍жŽžŠÔ‚ð—\‘ª‚µ‚Ü‚·B•¶Žš”‚ª‘½‚¢ê‡‚âAƒEƒFƒCƒgƒ^ƒO‚ª‘½‚¢ê‡‚ɂ͍жŽžŠÔ‚ª’·‚­‚È‚è‚Ü‚·B

-

ƒx[ƒXƒEƒFƒA‚âÄ¶ŠÂ‹«A‚Ü‚½‚»‚̐ݒè‚É‚æ‚Á‚Ă͍жŽžŠÔ‚ɂ΂ç‚‚«‚ª¶‚¶‚Ü‚·B‚»‚ê‚ç‚̒萔‚ÍTSsPlayTimeParamsƒRƒ“ƒ|[ƒlƒ“ƒg‚ª•ÛŽ‚µ‚Ü‚·BTSsPlayTimeParams‚𕡐””z’u‚µ‚Ä“K‹XØ‚è‘Ö‚¦‚邱‚ƂŁA‚¢‚ë‚¢‚ë‚ȍжŠÂ‹«‚ł̍жŽžŠÔ‚ð—\‘ª‰Â”\‚Å‚·B

-

Šî–{‚ÌŽg‚¢•û

-

TSsPlayTime‚ÆTSsPlayTimeParamsA‚»‚µ‚ÄTSsParser‚ÌŠeƒRƒ“ƒ|[ƒlƒ“ƒg‚ð1ŒÂ‚¸‚ƒtƒH[ƒ€‚É”z’u‚µ‚Ü‚·B

-

TSsParser‚Ìà–¾‚ðŽQl‚ɁA³‚µ‚­SsParser‚ÌMetaPattern, TagPattern‚ðÝ’肵‚Ü‚·B

-

ƒIƒuƒWƒFƒNƒgƒCƒ“ƒXƒyƒNƒ^‚æ‚èATSsPlayTime‚ÌSsParserƒvƒƒpƒeƒB‚ÆPlayTimeParamsƒvƒƒpƒeƒB‚ɁA‚»‚ꂼ‚ꍡ’u‚¢‚½ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðÝ’肵‚Ü‚·B

-

SsPlayTime.PlayTime ŠÖ”‚ɃXƒNƒŠƒvƒg‚ð“n‚·‚±‚ƂŁAÄ¶ŽžŠÔ‚ðŒvŽZ‚µ‚āAƒ~ƒŠ•b’PˆÊ‚Å•Ô‚µ‚Ü‚·B

-

Œp³

-

TObject - TPersistent - TComponent - TSsPlayTime
-TObject - TPersistent - TComponent - TSsPlayTimeParams

-

ƒŠƒtƒ@ƒŒƒ“ƒX - TSsPlayTime‚̃ƒ\ƒbƒh‚ƃvƒƒpƒeƒB

-
-
property PlayTimeParams: TSsPlayTimeParams
-
ŒvŽZ‚ÉŽg—p‚·‚éTSsPlayTimeParamsƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŠÖ˜A‚¯‚Ü‚·B
-
property SsParser: TSsParser
-
- ‚³‚­‚çƒXƒNƒŠƒvƒgƒp[ƒT‚ðŠÖ˜A‚¯‚Ü‚·BPlayTimeƒƒ\ƒbƒh‚É“n‚é‰Â”\«‚Ì‚ ‚éƒXƒNƒŠƒvƒg‚𐳂µ‚­‰ðŽß‚Å‚«‚é‚悤‚ɁAMetaPatternATagPattern‚ðÝ’肵‚Ä‚­‚¾‚³‚¢B‚Ü‚½A‚±‚ÌSsParserƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì“à—e‚ÍTSsPlayTime‚É‚æ‚Á‚ď‘‚«Š·‚¦‚ç‚ê‚Ü‚·B
-
function PlayTime(const Script: String): integer;
-
ŠÖ˜A‚¯‚ç‚ꂽSsParser‚ÆPlayTimeParams‚ðŽg‚Á‚āA“n‚³‚ꂽƒXƒNƒŠƒvƒg‚̍жŽžŠÔ(ƒ~ƒŠ•b)‚ð—\‘ª‚µ‚Ä•Ô‚µ‚Ü‚·BƒXƒNƒŠƒvƒg‚ð‰ðÍ‚µ‚ăEƒFƒCƒg‚̐”AƒT[ƒtƒBƒX•ÏX‚̐”‚È‚Ç‚ðƒJƒEƒ“ƒg‚µASsPlayTimeParams‚ÌŠeÝ’荀–Ú‚ðŒW”‚Æ‚µ‚½’Pƒ‚È1ŽŸŒ‹‡(üŒ`Œ‹‡)‚É‚æ‚Á‚čжŽžŠÔ‚ð—\‘ª‚µ‚Ü‚·B
-

ƒŠƒtƒ@ƒŒƒ“ƒX - TSsPlayTimeParams‚̃vƒƒpƒeƒB

-

ŽžŠÔ‚ðŽw’è‚·‚éê‡‚́A’PˆÊ‚Í‚·‚ׂă~ƒŠ•b(1/1000•b)‚Å‚·B

-
-
property ProfileName: String;
-
- ‚±‚̃pƒ‰ƒ[ƒ^‚̃Zƒbƒg‚É”CˆÓ‚Ì–¼‘O‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·Bumateria•W€‘¬“xv‚ȂǁA‚í‚©‚è‚â‚·‚¢–¼‘O‚ð•t‚¯‚Ä‚­‚¾‚³‚¢BƒRƒ“ƒ|[ƒlƒ“ƒgŽ©‘Ì‚Ì“®ì‚ɉe‹¿‚Í‚ ‚è‚Ü‚¹‚ñB
-
property CostConst: integer;
-
- ’Pƒ‚ɃXƒNƒŠƒvƒgÄ¶—\‘ªŽžŠÔ‚É‘«‚³‚ê‚é’萔’l‚Å‚·B—Ⴆ‚ÎŽÀÛ‚Ì1•¶Žš–ڂ̍жŠJŽn‚Ü‚Å‚É‚©‚È‚è‚Ì’x‰„‚ª¶‚¶‚é‚悤‚ȏꍇ‚ɁA³‚Ì’l‚ðŽw’肵‚Ä‚¨‚­‚ƁATSsPlayTime.PlayTime‚Ì–ß‚è’l‚É‚»‚Ì’l‚ª‰Á‚í‚è‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Í0‚Å‚·B
-
property CostWait: integer read FCostWait;
-
- ƒEƒFƒCƒgƒ^ƒO(\w1`\w9)‚ɂ‚¢‚āA\w1‚Ì1ŒÂ•ª‚̃EƒFƒCƒg—Ê‚ðŽw’肵‚Ü‚·B–{—ˆ‚Ì’è‹`‚Å‚Í\w1‚Í50ms‚̃EƒFƒCƒg‚Æ’è‹`‚³‚ê‚Ä‚¢‚Ü‚·‚ªAÄ¶ŠÂ‹«‚âÝ’è‚É‚æ‚Á‚āAƒEƒFƒCƒg—ʂ͈قȂè‚Ü‚·B‚È‚¨A\w2`\w9‚́A‚»‚ꂼ‚ê\w1‚̐³Šm‚É2`9”{‚̃EƒFƒCƒg—Ê‚Å‚ ‚é‚Ɖ¼’肳‚ê‚Ä‚¢‚Ü‚·B
-
property CostHiResWait: integer;
-
‚¸“xƒEƒFƒCƒg\_w[1]‚̃EƒFƒCƒg—Ê‚Å‚·B\_w[n]‚Í\_w[1]‚Ìn”{‚̃EƒFƒCƒg—Ê‚Æ‚È‚è‚Ü‚·B’è‹`‚©‚炵‚Ä1ms‚É‚È‚é‚ÆŽv‚¢‚Ü‚·‚ª”O‚Ì‚½‚ß—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B
-
property CostSurface: integer;
-
- ƒT[ƒtƒBƒX‚Ì1ŒÂ‚̐؂è‘Ö‚¦‚É‚©‚©‚鎞ŠÔ‚Å‚·B‚È‚¨AƒVƒ“ƒNƒƒiƒCƒYƒhƒZƒNƒVƒ‡ƒ“‚̏ꍇA2‚‚̃T[ƒtƒBƒX‚ª“¯Žž‚ɐ؂è‘Ö‚í‚邱‚Æ‚É‚È‚è‚Ü‚·‚ªA‚»‚ê‚͍l—¶‚³‚ê‚Ü‚¹‚ñB‚Ü‚½‚±‚Ì’l‚́AÄ¶‚·‚éƒ}ƒVƒ“‚̊‹«‚É‚æ‚Á‚čłà‘å‚«‚­¶‰E‚³‚ꂪ‚¿‚ȃpƒ‰ƒ[ƒ^‚Å‚·‚̂ŁATd‚ÉŒˆ’肵‚Ä‚­‚¾‚³‚¢(ƒT[ƒtƒBƒX‚̕ύX‚ªŒƒ‚µ‚¢’·•¶ƒXƒNƒŠƒvƒg‚Å‚È‚¢ŒÀ‚èÅIŒ‹‰Ê‚É‘å‚«‚ȉe‹¿‚Í‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ª)
-
property CostChar: integer;
-
”¼Šp•¶Žš1•¶Žš•ª‚̍ж(SpecialChars‚ÉŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ðœ‚­)‚É‚©‚©‚鎞ŠÔ‚Å‚·B
-
property CostDBChar: integer;
-
‘SŠp•¶Žš1•¶Žš•ª‚̍ж(SpecialChars‚ÉŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ðœ‚­)‚É‚©‚©‚鎞ŠÔ‚Å‚·BŒ»Ý‚Ì‚Æ‚±‚ëA‚±‚Ì’l‚ðCostChar‚Æ“¯‚¶‚Æ‚·‚é‚ׂ«Ä¶ŠÂ‹«‚ƁACostDBChar‚Ì2”{‚̍жŽžŠÔ‚ð‚©‚¯‚éÄ¶ŠÂ‹«‚ª‘¶Ý‚µ‚Ä‚¢‚é‚悤‚Å‚·B‘OŽÒ‚̂悤‚ȍжŠÂ‹«‚ł́A‰p•¶“™‚̍ж‚ª”äŠr“I’x‚­Œ©‚¦‚邱‚Æ‚É‚È‚è‚Ü‚·B
-
property CostQuickChar: integer;
-
- ƒNƒCƒbƒNƒZƒNƒVƒ‡ƒ“‚̏ꍇ‚É1•¶Žš‚̍ж‚É‚©‚¯‚鎞ŠÔ‚Å‚·B‚±‚ê‚Í‘SŠpE”¼Šp‚ð‹æ•Ê‚µ‚Ü‚¹‚ñB—‘z“I‚ɂ̓NƒCƒbƒNƒZƒNƒVƒ‡ƒ““à‚Å‚Ì•¶ŽšÄ¶ŽžŠÔ‚̓[ƒ‚Å‚·‚ªAŠÂ‹«‚É‚æ‚Á‚Ă͏¬‚³‚Ȑ³‚Ì’l‚ðŽw’è‚·‚邱‚ƂŁA—\‘ª¸“x‚ª‚‚܂邱‚Æ‚ª‚ ‚è‚Ü‚·B
-
property SpecialChars: TSsPlayTimeSpecialChars;
-
- ã‹L‚Ì”¼Šp•¶ŽšE‘SŠp•¶Žš‚Ì—\‘ª‚Ì—áŠO‚ðŽw’肵‚Ü‚·B‚¢‚­‚‚©‚̍жŠÂ‹«‚ł́A‹å“Ç“_‚ÉŽ©“®“I‚É’·‚߂̃EƒFƒCƒg‚ð‚Æ‚é‚à‚Ì‚ª‘¶Ý‚µ‚Ü‚·‚̂ŁA‚»‚̂悤‚È‚à‚Ì‚ð‚±‚±‚ÅŽw’肵‚Ä‚­‚¾‚³‚¢BÝ’è‚·‚é‚̂́ATSsPlayTimeSpecialCharŒ^‚̃RƒŒƒNƒVƒ‡ƒ“‚Å‚ ‚èAChar‚É•¶Žš‚ðAWait‚É‚»‚Ì•¶Žš‚ðÄ¶‚·‚éê‡‚ÌŽžŠÔ‚ðŽw’肵‚Ü‚·BChar‚Í1•¶Žš(ƒ_ƒuƒ‹ƒoƒCƒg•¶Žš‰Â)‚ÅŽw’肵‚Ä‚­‚¾‚³‚¢B
-
-
-

’ˆÓ

-

ƒx[ƒXƒEƒFƒA‚É‚æ‚éÄ¶ŽžŠÔ’²®‚Ì•ûj

-

(‹Lq‚́A2003”N8ŒŽŒ»Ý‚Ìó‹µ‚ðŒ³‚É‚µ‚Ä‚¢‚Ü‚·)

-

-‚Ù‚Æ‚ñ‚ǂ̍жŠÂ‹«‚ł́AƒXƒNƒŠƒvƒg‚ÍŽÀŽžŠÔ‚Æ‚Í“¯Šú‚¹‚¸‚ɍж‚³‚ê‚Ü‚·B—Ⴆ‚ÎPC‚Ì•‰‰×‚ª‚‚Ü‚Á‚½‚½‚߁A1•¶Žš•\Ž¦‚·‚éŠÔ‚ɐ”•b‚̃‰ƒO‚ª¶‚¶‚½A‚Æ‚¢‚¤ê‡‚Å‚àA‚»‚Ì’x‚ê‚ðŽæ‚è–ß‚·‚悤‚ȏˆ—‚Í‚È‚­A’WX‚ƁA1•¶Žš•\Ž¦‚µ‚Ä‚Í‹K’è‚̃EƒFƒCƒg•ª‘Ò‚¿A1‰ñƒT[ƒtƒBƒX‚ðØ‚è‘Ö‚¦‚āA1•¶Žš•\Ž¦‚µ‚Ä‚Í‹K’è‚̃EƒFƒCƒg•ª‘Ò‚¿c‚Æ‚¢‚¤‚悤‚ɍж‚³‚ê‚Ä‚¢‚Ü‚·B

-

‚»‚ê‚ɑ΂µ‚āAmateriaŒÝŠ·ƒx[ƒXƒEƒFƒA‚̈ê‚‚ł ‚éSSP‚ł́A—‘z‚̃^ƒCƒ€ƒ‰ƒCƒ“‚æ‚è’x‚ꂽê‡‚ɁA‚»‚Ì’x‚ê‚ðŽæ‚è–ß‚·‚悤‚ȏˆ—‚ª‘g‚ݍž‚Ü‚ê‚Ä‚¢‚Ü‚·B—‘z‚̃^ƒCƒ€ƒ‰ƒCƒ“‚́AƒNƒCƒbƒNƒZƒNƒVƒ‡ƒ“‚âƒT[ƒtƒBƒX•ÏX‚̃RƒXƒg‚ðƒ[ƒ‚Æ‚µAƒEƒFƒCƒgƒ^ƒO‚ƒʏí‚Ì”­˜b‚Å‚Ì‚ÝŽžŠÔ‚ªi‚Þ‚à‚Ì‚Æ‚µ‚ÄŒvŽZ‚³‚ê‚Ä‚¢‚Ü‚·BMIDIƒvƒŒ[ƒ„[‚ª‘S‚Ẵm[ƒg‚̃^ƒCƒ~ƒ“ƒO‚𐧌䂵‚ăeƒ“ƒ|‚ª‚¸‚ê‚È‚¢‚Ì‚Æ“¯—l‚ɁASSP‚Å‚Í‚»‚ꂼ‚ê‚Ì”­˜b‚Ì•¶ŽšoŒ»Žž‚ÍŠ®‘S‚ɐ§Œä‚³‚ê‚Ä‚¢‚Ü‚·B

-

TSsPlayTime‚̍жŽž—\‘ª‚́ASSP‚̂悤‚È•ûj‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚éÄ¶ŠÂ‹«‚ɂ‚¢‚ẮA—˜_ã100%³Šm‚È‚à‚Ì‚É‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B‹t‚ɁA‚»‚Ì‘¼‘½‚­‚̍жŠÂ‹«‚É‚¨‚¢‚ẮAƒT[ƒtƒBƒX•ÏX‚̃^ƒO‚ªŽÀs‚³‚ê‚邱‚Æ‚Å•½‹Ï‚Ç‚Ì’ö“x‚ÌŽžŠÔ‚ðŽg‚¤‚Ì‚©AƒNƒCƒbƒNƒZƒNƒVƒ‡ƒ“‚Å‚Í1•¶Žš•\Ž¦‚·‚é‚Ì‚É•½‹Ï‚Ç‚Ì’ö“x‚©‚©‚Á‚Ä‚¢‚é‚Ì‚©A‚È‚Ç‚ðŽÀ‘ª‚ÉŠî‚¢‚ÄŒˆ’è‚·‚邱‚ƂŁATSsPlayTimeParams‚ÌŠeƒvƒƒpƒeƒB‚ðŒˆ’è‚µ‚Ä‚¢‚­•K—v‚ª‚ ‚èAPCŠÂ‹«‚̍·‚È‚Ç‚ðl—¶‚·‚é•K—v‚à‚ ‚邽‚߁A‚ ‚é’ö“x‚̌덷‚ª”­¶‚µ‚Ü‚·B

- - - - diff --git a/sakurasuite/sample_editor/Project1.dpr b/sakurasuite/sample_editor/Project1.dpr deleted file mode 100644 index 513a1dd..0000000 --- a/sakurasuite/sample_editor/Project1.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program Project1; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/sakurasuite/sample_editor/Project1.res b/sakurasuite/sample_editor/Project1.res deleted file mode 100644 index 5ac562e599daa1469e9044b4e3a4e7c5d6fc310b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmZuw!D`e{6g`;)3`FV-2<@&zD6KmUSqipdQM%CnLy=}HgXHZrr3(XD^jD^2Biv28 z@;3xGE@xN4((Ab|$vA?SIeGWIbMAeQ_vQh>oKWq-^q=@S8TF8!z-!a#EE-Kun9PYI zBET@sn*T=y@Q14E2Y#6n6}qmYV4JW(`+?tnUy3A~Sxl+=NF--uYaZ8)O{_VL<+ITa z)O9U#{g-<~hUoZsm}{iHM)bNYhY9iwZ;Il)Jo1jZX|u_GSr)~6&lBns=ZdrP})Yl{C0#|Nvu*tvNQr`3H!4_Ds;qR#D z)^Pj4rB9aw=aFou&h5#-n8JJ3W#K6oDwod$BCwc~y6 zIoAdJb>!0KGz#mP24avWpxUD#^~FrP>MRoE*E@CUm1(RKg; diff --git a/sakurasuite/sample_editor/Unit1.dfm b/sakurasuite/sample_editor/Unit1.dfm deleted file mode 100644 index 8792371..0000000 --- a/sakurasuite/sample_editor/Unit1.dfm +++ /dev/null @@ -1,478 +0,0 @@ -object Form1: TForm1 - Left = 281 - Top = 541 - Width = 531 - Height = 418 - Caption = 'SakuraScript Editor Test' - Color = clBtnFace - Font.Charset = SHIFTJIS_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = #65325#65331' '#65328#12468#12471#12483#12463 - Font.Style = [] - OldCreateOrder = False - Position = poDesktopCenter - OnResize = FormResize - PixelsPerInch = 96 - TextHeight = 12 - object Editor1: TEditor - Left = 0 - Top = 0 - Width = 338 - Height = 391 - Cursor = crIBeam - Align = alClient - Caret.AutoCursor = True - Caret.AutoIndent = False - Caret.BackSpaceUnIndent = True - Caret.Cursors.DefaultCursor = crIBeam - Caret.Cursors.DragSelCursor = crDrag - Caret.Cursors.DragSelCopyCursor = 2 - Caret.Cursors.InSelCursor = crDefault - Caret.Cursors.LeftMarginCursor = 1 - Caret.Cursors.TopMarginCursor = crDefault - Caret.FreeCaret = False - Caret.FreeRow = False - Caret.InTab = False - Caret.KeepCaret = True - Caret.LockScroll = False - Caret.NextLine = True - Caret.PrevSpaceIndent = False - Caret.RowSelect = True - Caret.SelDragMode = dmAutomatic - Caret.SelMove = True - Caret.SoftTab = True - Caret.Style = csDefault - Caret.TabIndent = False - Caret.TabSpaceCount = 8 - Color = clWindow - Fountain = SakuraScriptFountain1 - Font.Charset = SHIFTJIS_CHARSET - Font.Color = clBlack - Font.Height = -12 - Font.Name = #65325#65331' '#12468#12471#12483#12463 - Font.Style = [] - HitStyle = hsSelect - Imagebar.DigitWidth = 8 - Imagebar.LeftMargin = 2 - Imagebar.MarkWidth = 0 - Imagebar.RightMargin = 2 - Imagebar.Visible = False - Lines.Strings = ( - '\t\h\s[5]\_s'#12362#12399#12424#12358#12394#65374#12290'
\e') - Marks.EofMark.Color = clGray - Marks.EofMark.Visible = False - Marks.RetMark.Color = clGray - Marks.RetMark.Visible = False - Marks.WrapMark.Color = clGray - Marks.WrapMark.Visible = False - Marks.HideMark.Color = clGray - Marks.HideMark.Visible = False - Marks.Underline.Color = clGray - Marks.Underline.Visible = False - Margin.Character = 0 - Margin.Left = 2 - Margin.Line = 0 - Margin.Top = 2 - Leftbar.BkColor = clSilver - Leftbar.Color = clBlack - Leftbar.Column = 1 - Leftbar.Edge = True - Leftbar.LeftMargin = 2 - Leftbar.RightMargin = 2 - Leftbar.ShowNumber = True - Leftbar.ShowNumberMode = nmRow - Leftbar.Visible = False - Leftbar.ZeroBase = False - Leftbar.ZeroLead = True - ReadOnly = False - Ruler.BkColor = clSilver - Ruler.Color = clBlack - Ruler.Edge = True - Ruler.GaugeRange = 10 - Ruler.MarkColor = clBlack - Ruler.Visible = True - ScrollBars = ssBoth - Speed.CaretVerticalAc = 2 - Speed.InitBracketsFull = False - Speed.PageVerticalRange = 2 - Speed.PageVerticalRangeAc = 2 - TabOrder = 0 - UndoListMax = 64 - View.Brackets = <> - View.Colors.Ank.BkColor = clNone - View.Colors.Ank.Color = clNone - View.Colors.Ank.Style = [] - View.Colors.Comment.BkColor = clNone - View.Colors.Comment.Color = clNone - View.Colors.Comment.Style = [] - View.Colors.DBCS.BkColor = clNone - View.Colors.DBCS.Color = clNone - View.Colors.DBCS.Style = [] - View.Colors.Hit.BkColor = clNone - View.Colors.Hit.Color = clNone - View.Colors.Hit.Style = [] - View.Colors.Int.BkColor = clNone - View.Colors.Int.Color = clNone - View.Colors.Int.Style = [] - View.Colors.Mail.BkColor = clNone - View.Colors.Mail.Color = clNone - View.Colors.Mail.Style = [] - View.Colors.Reserve.BkColor = clNone - View.Colors.Reserve.Color = clNone - View.Colors.Reserve.Style = [] - View.Colors.Select.BkColor = clNavy - View.Colors.Select.Color = clWhite - View.Colors.Select.Style = [] - View.Colors.Str.BkColor = clNone - View.Colors.Str.Color = clNone - View.Colors.Str.Style = [] - View.Colors.Symbol.BkColor = clNone - View.Colors.Symbol.Color = clNone - View.Colors.Symbol.Style = [] - View.Colors.Url.BkColor = clNone - View.Colors.Url.Color = clNone - View.Colors.Url.Style = [] - View.ControlCode = False - View.Mail = False - View.Url = False - WantReturns = True - WantTabs = True - WordWrap = True - WrapOption.FollowRetMark = False - WrapOption.FollowPunctuation = False - WrapOption.FollowStr = #12289#12290#65292#65294#12539#65311#65281#12443#12444#12541#12542#12445#12446#12293#12540#65289#65341#65373#12301#12303'!),.:;?]}'#65377#65379#65380#65381#65392#65438#65439 - WrapOption.Leading = False - WrapOption.LeadStr = #65288#65339#65371#12300#12302'([{'#65378 - WrapOption.PunctuationStr = #12289#12290#65292#65294',.'#65377#65380 - WrapOption.WordBreak = False - WrapOption.WrapByte = 40 - end - object Memo1: TMemo - Left = 338 - Top = 0 - Width = 185 - Height = 391 - Align = alRight - Lines.Strings = ( - 'Memo1') - TabOrder = 1 - OnClick = Memo1Click - end - object SakuraScriptFountain1: TSakuraScriptFountain - Brackets = <> - Reserve.BkColor = clNone - Reserve.Color = clNone - Reserve.Style = [] - Scope0Color.BkColor = clNone - Scope0Color.Color = clNavy - Scope0Color.Style = [] - Scope1Color.BkColor = clNone - Scope1Color.Color = clOlive - Scope1Color.Style = [] - TagColor.BkColor = clNone - TagColor.Color = clLime - TagColor.Style = [] - TagErrorColor.BkColor = clNone - TagErrorColor.Color = clRed - TagErrorColor.Style = [fsBold] - MetaWordColor.BkColor = clNone - MetaWordColor.Color = clBlue - MetaWordColor.Style = [fsBold] - SynchronizedColor.BkColor = clNone - SynchronizedColor.Color = clFuchsia - SynchronizedColor.Style = [] - SakuraScriptParser = SsParser1 - Left = 16 - Top = 320 - end - object SsParser1: TSsParser - TagPattern.Strings = ( - '\h' - '\u' - '\s[%D]' - '\s[-%D]' - '\s%d' - '!s%b' - '!s%.' - '!b%b' - '!b%.' - '!f%b' - '\n[half]' - '!n%b' - '\n' - '\w%d' - '!w%.' - '\e' - '\t' - '\_s' - '\_q' - '!j%b' - '!j' - '\c' - '\URL%b%b%b%b%b%b%b%b%b%b%b%b%b%b%b' - '\URL%b%b%b%b%b%b%b%b%b%b%b%b%b' - '\URL%b%b%b%b%b%b%b%b%b%b%b' - '\URL%b%b%b%b%b%b%b%b%b' - '\URL%b%b%b%b%b%b%b' - '\URL%b%b%b%b%b' - '\URL%b%b%b' - '\URL%b' - '!x' - '!l%b' - '!q%d%b%b' - '!q%d%b' - '!q%d' - '!z' - '!y' - '!*' - '!v' - '!_v%b' - '!_V' - '!8%b' - '!8' - '!m%b' - '!m' - '!i[%D]' - '!i%.' - '!_i' - '!a' - '!_c%b' - '!_c' - '!__c' - '!__t' - '!-' - '!+' - '!_b%b' - '!1' - '!2' - '!3' - '!4' - '!5' - '!6' - '!7' - '!|' - '!_w%b' - '!_+') - MetaPattern.Strings = ( - 'selfname2' - 'selfname' - 'keroname' - 'username' - 'screenwidth' - 'screenheight' - 'month' - 'day' - 'hour' - 'minute' - 'second' - 'wronghour' - 'songname' - 'j%b' - 'exh' - 'by' - 'bm' - 'bd' - 'et' - 'ms' - 'mz' - 'ml' - 'mc' - 'mh' - 'mt' - 'me' - 'mp' - 'm?' - 'dms' - 'c' - '0' - '1') - Left = 16 - Top = 288 - end - object HTMLFountain1: THTMLFountain - FileExtList.Strings = ( - '.htm' - '.html') - Brackets = < - item - ItemColor.BkColor = clNone - ItemColor.Color = clPurple - ItemColor.Style = [] - LeftBracket = '' - end> - Reserve.BkColor = clNone - Reserve.Color = clNone - Reserve.Style = [] - Ampersand.BkColor = clNone - Ampersand.Color = clNone - Ampersand.Style = [] - Mail.BkColor = clNone - Mail.Color = clGray - Mail.Style = [] - Str.BkColor = clNone - Str.Color = clNone - Str.Style = [] - TagAttribute.BkColor = clNone - TagAttribute.Color = clFuchsia - TagAttribute.Style = [] - TagAttributeValue.BkColor = clNone - TagAttributeValue.Color = clYellow - TagAttributeValue.Style = [] - TagColor.BkColor = clNone - TagColor.Color = clOlive - TagColor.Style = [] - TagElement.BkColor = clNone - TagElement.Color = clGreen - TagElement.Style = [fsBold] - Url.BkColor = clNone - Url.Color = clNone - Url.Style = [] - Left = 16 - Top = 216 - end - object DelphiFountain1: TDelphiFountain - FileExtList.Strings = ( - '.dpr' - '.inc' - '.pas') - Brackets = < - item - ItemColor.BkColor = clNone - ItemColor.Color = clOlive - ItemColor.Style = [] - LeftBracket = '{' - RightBracket = '}' - end - item - ItemColor.BkColor = clNone - ItemColor.Color = clOlive - ItemColor.Style = [] - LeftBracket = '(*' - RightBracket = '*)' - end> - Reserve.BkColor = clNone - Reserve.Color = clBlue - Reserve.Style = [fsBold] - ReserveWordList.Strings = ( - 'absolute' - 'abstract' - 'and' - 'array' - 'as' - 'asm' - 'assembler' - 'automated' - 'begin' - 'case' - 'cdecl' - 'class' - 'const' - 'constructor' - 'default' - 'destructor' - 'dispid' - 'dispinterface' - 'div' - 'do' - 'downto' - 'dynamic' - 'else' - 'end' - 'except' - 'export' - 'exports' - 'external' - 'far' - 'file' - 'finalization' - 'finally' - 'for' - 'forward' - 'function' - 'goto' - 'if' - 'implementation' - 'in' - 'inherited' - 'initialization' - 'inline' - 'interface' - 'is' - 'label' - 'library' - 'message' - 'mod' - 'near' - 'nil' - 'nodefault' - 'not' - 'object' - 'of' - 'or' - 'out' - 'overload' - 'override' - 'packed' - 'pascal' - 'private' - 'procedure' - 'program' - 'property' - 'protected' - 'public' - 'published' - 'raise' - 'readonly' - 'record' - 'register' - 'repeat' - 'resident' - 'resourcestring' - 'safecall' - 'set' - 'shl' - 'shr' - 'stdcall' - 'stored' - 'string' - 'then' - 'threadvar' - 'to' - 'try' - 'type' - 'unit' - 'until' - 'uses' - 'var' - 'virtual' - 'while' - 'with' - 'writeonly' - 'xor') - Ank.BkColor = clNone - Ank.Color = clBlack - Ank.Style = [] - AsmBlock.BkColor = clNone - AsmBlock.Color = clNone - AsmBlock.Style = [] - Comment.BkColor = clNone - Comment.Color = clOlive - Comment.Style = [] - DBCS.BkColor = clNone - DBCS.Color = clNone - DBCS.Style = [] - Int.BkColor = clNone - Int.Color = clNone - Int.Style = [] - Str.BkColor = clNone - Str.Color = clNone - Str.Style = [] - Symbol.BkColor = clNone - Symbol.Color = clNone - Symbol.Style = [] - Left = 16 - Top = 248 - end -end diff --git a/sakurasuite/sample_editor/Unit1.pas b/sakurasuite/sample_editor/Unit1.pas deleted file mode 100644 index 73dd57c..0000000 --- a/sakurasuite/sample_editor/Unit1.pas +++ /dev/null @@ -1,43 +0,0 @@ -unit Unit1; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, heClasses, heFountain, SakuraScriptFountain, HEditor, SsParser, - HTMLFountain, StdCtrls, DelphiFountain; - -type - TForm1 = class(TForm) - Editor1: TEditor; - SakuraScriptFountain1: TSakuraScriptFountain; - SsParser1: TSsParser; - HTMLFountain1: THTMLFountain; - Memo1: TMemo; - DelphiFountain1: TDelphiFountain; - procedure Memo1Click(Sender: TObject); - procedure FormResize(Sender: TObject); - private - { Private éŒ¾ } - public - { Public éŒ¾ } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.Memo1Click(Sender: TObject); -begin - Memo1.Lines.Clear; -end; - -procedure TForm1.FormResize(Sender: TObject); -begin - Editor1.WrapOption.WrapByte := (Editor1.Width - 30) div 6; -end; - -end. diff --git a/sakurasuite/sample_parser/Project1.dpr b/sakurasuite/sample_parser/Project1.dpr deleted file mode 100644 index dfa3f13..0000000 --- a/sakurasuite/sample_parser/Project1.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program Project1; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/sakurasuite/sample_parser/Project1.res b/sakurasuite/sample_parser/Project1.res deleted file mode 100644 index 90e5abfde7d80702908e1dd85aa1b2a920fb3642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmaJ=Jx{|h5Pc>n-k=c-Otd3o5d#AQAf!qRz`!2}ir5;XwvNY z-3ov|6h&}c84?BRx@N%-;hhVPYnaO?gC$9)4aNV@qx=y6o;HGKTM2IjxwSU%RL;^XZiL5~9ff+}#x(mG+2GNbESzVI z-+~Pgaa^Wnyet_gRSDC0dJhd$cop=SzY>|4yE2SKAVBr(~ z?N*p|og>bPLumH~8*? h^a9er!-@4~+Zg - TabOrder = 2 - ViewStyle = vsReport - end - object Edit2: TEdit - Left = 8 - Top = 48 - Width = 448 - Height = 20 - Anchors = [akLeft, akTop, akRight] - TabOrder = 3 - Text = '\t' - end - object Button2: TButton - Left = 88 - Top = 80 - Width = 75 - Height = 25 - Caption = 'Match' - TabOrder = 4 - OnClick = Button2Click - end - object CheckBox1: TCheckBox - Left = 16 - Top = 112 - Width = 137 - Height = 17 - Caption = 'EscapeInvalidMeta' - TabOrder = 5 - OnClick = CheckBox1Click - end - object CheckBox2: TCheckBox - Left = 184 - Top = 113 - Width = 97 - Height = 15 - Caption = 'LeaveEscape' - Checked = True - State = cbChecked - TabOrder = 6 - OnClick = CheckBox2Click - end - object Button3: TButton - Left = 168 - Top = 80 - Width = 75 - Height = 25 - Caption = 'GetParam' - TabOrder = 7 - OnClick = Button3Click - end - object Button4: TButton - Left = 248 - Top = 80 - Width = 75 - Height = 25 - Caption = 'Benchmark' - TabOrder = 8 - OnClick = Button4Click - end - object SsParser: TSsParser - TagPattern.Strings = ( - '\h ' - '\u' - '\s[%D]' - '\s%d' - '!s%b' - '!s%.' - '\b[%D]' - '\b%d' - '!b%b' - '!b%.' - '\n' - '\w%d' - '!w%.' - '\e' - '\t' - '\j%b' - '!j' - '\c' - '\x' - '\q%d%b%b' - '\z' - '\y' - '\*' - '\v' - '\8%b' - '\m%b' - '\i[%D]' - '\i%d' - '!i%b' - '!i%.' - '\_i ' - '\a' - '\_c%b' - '\__c' - '\-' - '\1' - '\2' - '\3' - '\4' - '\|') - MetaPattern.Strings = ( - 'selfname2' - 'selfname' - 'keroname' - 'username' - 'screenwidth' - 'screenheight' - 'month' - 'day' - 'hour' - 'minute' - 'second' - 'j%b' - 'exh' - 'by' - 'bm' - 'bd' - 'o' - 'd' - 'h' - 'm' - 's' - 'c' - '0' - '1' - 'et' - 'ms' - 'mz' - 'mc' - 'mh' - 'mt' - 'me' - 'mp' - 'm?' - 'dms') - Left = 376 - Top = 80 - end -end diff --git a/sakurasuite/sample_parser/Unit1.pas b/sakurasuite/sample_parser/Unit1.pas deleted file mode 100644 index 68c04f5..0000000 --- a/sakurasuite/sample_parser/Unit1.pas +++ /dev/null @@ -1,100 +0,0 @@ -unit Unit1; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - SsParser, ComCtrls, StdCtrls; - -type - TForm1 = class(TForm) - Edit1: TEdit; - Button1: TButton; - ListView1: TListView; - SsParser: TSsParser; - Edit2: TEdit; - Button2: TButton; - CheckBox1: TCheckBox; - CheckBox2: TCheckBox; - Button3: TButton; - Button4: TButton; - procedure Button1Click(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure CheckBox2Click(Sender: TObject); - procedure CheckBox1Click(Sender: TObject); - procedure Button3Click(Sender: TObject); - procedure Button4Click(Sender: TObject); - private - { Private éŒ¾ } - public - { Public éŒ¾ } - end; - -var - Form1: TForm1; - -implementation - -{$R *.DFM} - -procedure TForm1.Button1Click(Sender: TObject); -var i: integer; - Li: TListItem; -begin - ListView1.Items.Clear; - SsParser.InputString := Edit1.Text; - for i := 0 to SsParser.Count-1 do begin - Li := ListView1.Items.Add; - case SsParser.MarkUpType[i] of - mtTag: Li.Caption := 'Tag'; - mtTagErr: Li.Caption := 'TagErr'; - mtMeta: Li.Caption := 'Meta'; - mtStr: Li.Caption := 'Str'; - end; - Li.SubItems.Add(IntToStr(i)); - Li.SubItems.Add(SsParser[i]); - Li.SubItems.Add(IntToStr(SsParser.Position[i])); - end; -end; - -procedure TForm1.Button2Click(Sender: TObject); -var i: integer; - Str: String; -begin - i := SsParser.Match(Edit1.Text, Edit2.Text); - Str := Copy(Edit1.Text, 1, i); - ShowMessage(IntToStr(i) + #13#10 + Str); -end; - -procedure TForm1.CheckBox2Click(Sender: TObject); -begin - SsParser.LeaveEscape := CheckBox2.Checked; -end; - -procedure TForm1.CheckBox1Click(Sender: TObject); -begin - SsParser.EscapeInvalidMeta := CheckBox1.Checked; -end; - -procedure TForm1.Button3Click(Sender: TObject); -begin - try - ShowMessage(SsParser.GetParam(Edit1.Text, StrToInt(Edit2.Text))); - except - on EConvertError do ShowMessage('Edit2 is not Integer'); - end; -end; - -procedure TForm1.Button4Click(Sender: TObject); -var i: integer; - from: Int64; -const - loop = 100; -begin - from := GetTickCount; - for i := 1 to loop do - SsParser.InputString := Edit1.Text; - ShowMessage(Format('%d loops, %d ms.', [loop, GetTickCount - from])); -end; - -end. diff --git a/sakurasuite/sample_parser/pattern.txt b/sakurasuite/sample_parser/pattern.txt deleted file mode 100644 index 493153c..0000000 --- a/sakurasuite/sample_parser/pattern.txt +++ /dev/null @@ -1,85 +0,0 @@ -ˆÈ‰º‚́ASsParser‚ÌTagPattern‚ÉŽg‚¦‚éƒpƒ^[ƒ“•¶Žš—ñ—á‚Å‚·B -2001”N3ŒŽ31“úŒ»Ý‚̍ŐV”łɑΉž‚µ‚Ä‚¢‚é‚ÆŽv‚¢‚Ü‚·B -ŒÃ‚¢ƒ}[ƒNƒAƒbƒv‚àŽc‚Á‚Ä‚¢‚Ü‚·‚Ì‚ÅŽ©•ª‚Å‚æ‚­Šm‚©‚ß‚Ä‚­‚¾‚³‚¢AŠJ”­ŽÒ‚È‚çc - -ƒXƒNƒŠƒvƒg‚Ì–Ú“I‚É‚æ‚Á‚Ä‚àˆÈ‰º‚̃pƒ^[ƒ“‚Í•Ï‚í‚Á‚Ä‚­‚é‚Å‚µ‚傤‚µA -‚Ü‚½«—ˆƒ^ƒO‚ª‘‚¦‚½‚茸‚Á‚½‚è‚·‚邱‚Æ‚ðl‚¦‚é‚ƁA -ŠO•”ƒtƒ@ƒCƒ‹‚©‚ç“ǂݍž‚ނ悤‚ÈŒ`Ž®‚É‚µ‚Ä‚¨‚­‚Æ‚¢‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB - -===============ˆÈ‰ºTagPattern=========== -\h -\u -\s[%D] -\s%d -!s%b -!s%. -\b[%D] -\b%d -!b%b -!b%. -\n -\w%d -!w%. -\e -\t -\j%b -!j -\c -\x -\q%d%b%b -\z -\y -\* -\v -\8%b -\m%b -\i[%D] -\i%d -!i%b -!i%. -\_i -\a -\_c%b -\__c -\- -\1 -\2 -\3 -\4 -\| - -================ˆÈ‰ºMetaPattern================== -selfname2 -selfname -keroname -username -screenwidth -screenheight -month -day -hour -minute -second -j%b -exh -by -bm -bd -o -d -h -m -s -c -0 -1 -et -ms -mz -mc -mh -mt -me -mp -m? -dms \ No newline at end of file diff --git a/sakurasuite/sample_seeker/Project1.dpr b/sakurasuite/sample_seeker/Project1.dpr deleted file mode 100644 index dfa3f13..0000000 --- a/sakurasuite/sample_seeker/Project1.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program Project1; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/sakurasuite/sample_seeker/Project1.res b/sakurasuite/sample_seeker/Project1.res deleted file mode 100644 index 90e5abfde7d80702908e1dd85aa1b2a920fb3642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmaJ=Jx{|h5Pc>n-k=c-Otd3o5d#AQAf!qRz`!2}ir5;XwvNY z-3ov|6h&}c84?BRx@N%-;hhVPYnaO?gC$9)4aNV@qx=y6o;HGKTM2IjxwSU%RL;^XZiL5~9ff+}#x(mG+2GNbESzVI z-+~Pgaa^Wnyet_gRSDC0dJhd$cop=SzY>|4yE2SKAVBr(~ z?N*p|og>bPLumH~8*? h^a9er!-@4~+Zg - HideSelection = False - ReadOnly = True - TabOrder = 0 - ViewStyle = vsReport - end - object StatusBar1: TStatusBar - Left = 0 - Top = 176 - Width = 385 - Height = 19 - Panels = <> - SimplePanel = True - end - object Panel1: TPanel - Left = 0 - Top = 152 - Width = 385 - Height = 24 - Align = alBottom - BevelOuter = bvNone - TabOrder = 2 - object Button1: TButton - Left = 8 - Top = 0 - Width = 105 - Height = 25 - Caption = '&Send DirectSSTP' - TabOrder = 0 - OnClick = Button1Click - end - object Button2: TButton - Left = 152 - Top = 0 - Width = 75 - Height = 25 - Caption = 'Test2' - TabOrder = 1 - OnClick = Button2Click - end - end - object SakuraSeeker1: TSakuraSeeker - OnAfterDetection = SakuraSeeker1AfterDetection - OnDetectResultChanged = SakuraSeeker1DetectResultChanged - FileMappingTarget.Strings = ( - 'Sakura' - 'Usagi' - 'UmiUmi') - Left = 16 - Top = 32 - end - object MainMenu1: TMainMenu - Left = 176 - Top = 96 - object File1: TMenuItem - Caption = '&File' - object Update1: TMenuItem - Caption = '&Update' - OnClick = Update1Click - end - object Exit1: TMenuItem - Caption = '&Exit' - OnClick = Exit1Click - end - end - end - object Timer1: TTimer - Enabled = False - OnTimer = Timer1Timer - Left = 48 - Top = 32 - end - object TestDSstp1: TTestDSstp - Left = 176 - Top = 32 - end -end diff --git a/sakurasuite/sample_seeker/Unit1.pas b/sakurasuite/sample_seeker/Unit1.pas deleted file mode 100644 index 09ce047..0000000 --- a/sakurasuite/sample_seeker/Unit1.pas +++ /dev/null @@ -1,126 +0,0 @@ -unit Unit1; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - SakuraSeeker, ComCtrls, Menus, ExtCtrls, StdCtrls, TestDSstp; - -type - TForm1 = class(TForm) - ListView1: TListView; - StatusBar1: TStatusBar; - SakuraSeeker1: TSakuraSeeker; - MainMenu1: TMainMenu; - File1: TMenuItem; - Update1: TMenuItem; - Exit1: TMenuItem; - Timer1: TTimer; - Panel1: TPanel; - Button1: TButton; - TestDSstp1: TTestDSstp; - Button2: TButton; - procedure FormCreate(Sender: TObject); - procedure Exit1Click(Sender: TObject); - procedure Update1Click(Sender: TObject); - procedure SakuraSeeker1AfterDetection(Sender: TObject); - procedure SakuraSeeker1DetectResultChanged(Sender: TObject); - procedure Timer1Timer(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure Button2Click(Sender: TObject); - private - { Private éŒ¾ } - protected - procedure GetMessage(var Message: TWMCopyData); message WM_COPYDATA; - public - { Public éŒ¾ } - procedure Update; - end; - -var - Form1: TForm1; - -implementation - -{$R *.DFM} - -procedure TForm1.FormCreate(Sender: TObject); -var SakuraSeeker: TSakuraSeeker; -begin - SakuraSeeker := TSakuraSeeker.Create(Self); - SakuraSeeker.BeginDetect; -end; - -procedure TForm1.Exit1Click(Sender: TObject); -begin - Close; -end; - -procedure TForm1.Update1Click(Sender: TObject); -begin - SakuraSeeker1.BeginDetect; - Update; -end; - -procedure TForm1.Update; -var i: integer; - Item: TListItem; -begin - ListView1.Items.Clear; - for i := 0 to SakuraSeeker1.Count-1 do begin - Item := ListView1.Items.Add; - Item.Caption := SakuraSeeker1[i].ProcessID; - Item.SubItems.Add(IntToStr(SakuraSeeker1[i].HWnd)); - Item.SubItems.Add(SakuraSeeker1[i].Name); - end; -end; - -procedure TForm1.SakuraSeeker1AfterDetection(Sender: TObject); -begin - StatusBar1.SimpleText := IntToStr(SakuraSeeker1.Count) + 'Œ ' + - DateTimeToStr(Now); - Update; -end; - -procedure TForm1.SakuraSeeker1DetectResultChanged(Sender: TObject); -begin - ShowMessage('Status Changed!'); -end; - -procedure TForm1.Timer1Timer(Sender: TObject); -begin - SakuraSeeker1.BeginDetect; -end; - -procedure TForm1.Button1Click(Sender: TObject); -var Target: THandle; - Dat: TCopyDataStruct; - Str: String; -begin - if ListView1.Selected = nil then Exit; - Target := SakuraSeeker1[ListView1.Selected.Index].HWnd; - - Str := 'SEND SSTP/1.4'#13#10'HWnd: '+IntToStr(Form1.Handle)+#13#10'Charset: Shift_JIS'#13#10 + - 'Sender: Tester'#13#10'Script: \t‚Ä‚·‚Ä‚·B\e'#13#10#13#10; - - Dat.dwData := 9801; - Dat.cbData := Length(Str); - Dat.lpData := PChar(Str); - - SendMessage(Target, WM_COPYDATA, Form1.Handle, LPARAM(@Dat)); - -end; - -procedure TForm1.GetMessage(var Message: TWMCopyData); -begin - inherited; - ShowMessage(PChar(Message.CopyDataStruct^.lpData)); -end; - -procedure TForm1.Button2Click(Sender: TObject); -begin - if SakuraSeeker1.Count > 0 then - TestDSstp1.Go(SakuraSeeker1[0].HWnd); -end; - -end. diff --git a/sakurasuite/ssparser.dcr b/sakurasuite/ssparser.dcr deleted file mode 100644 index e6ec78902ae9b04945c044212963929831452ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmZ|PEtV8P48ZZwj|VFkhm1sWf_XvUd4NDhas*_KfW&RY3XTzpL?YwH?G>7TbL_`$pI&t}^eSRkLn#{T`@=-o;ypuQbp7@sYY`3>Bo}N3s;^O7W z6S>*aww&+&8AF7RM9jdMOQ|aPch!NCnp6k5at3NFkMNEBMc1quUSJdh~# z>35ZAa0C*C7U5D-VQ>Tzh2|jz3WFn%D6|M4X@$WNNEBL3cuY}@!x2andQMH1XmA7) zg`U$kB^n%oM4{)BxDpMHK%&rdxk8BsM<7w?xs<6ygCmeA^jzjrqQMbJ6nc9F)=D%u z0*OLPF#iz6n7Lydi9$=LKw)qM5`~_x&6H?x1QLawuhf-ja0C*Cp0Ar9i7+?Qtu0(?)kSO%ruAxMOBakTc+{&p$gCmeA^xWp9M1v!c^5f?(u~)_#1~VLgDkH2j zaGw7&s~rBgDe4 z?)WhJ?)8)%NFR^nw;rRz&0LEuO@2&s4*z$48~ - - - - - - -TSsParser - - - - - -

TSsParser

-

u‚³‚­‚çƒXƒNƒŠƒvƒgv‚Ì‘½‹@”\ƒp[ƒT‹@”\‚ðŽ‚Â”ñƒrƒWƒ…ƒAƒ‹ƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B’Pˆês‚Ì‚³‚­‚çƒXƒNƒŠƒvƒg‚ðˆ—‚µ‚Ü‚·B‚‚܂è“TŒ^“I‚É‚Í\t‚©‚çŽn‚Ü‚è\e‚ŏI‚í‚éA1s‚̃XƒNƒŠƒvƒg‚Å‚·BEntry‚È‚Ç‚ª—‚ñ‚¾•¡”sƒXƒNƒŠƒvƒg‚ɂ͑Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñ‚ªA•â•‚Æ‚µ‚Ä‚ÍŽg‚¦‚Ü‚·B

-

Žå‚È—p“r

-
    -
  • “ÆŽ©‚ÌSSTPƒT[ƒo‚ð\’z‚·‚éê‡‚̕⏕
  • -
  • ‚³‚­‚çƒXƒNƒŠƒvƒg‚̃GƒfƒBƒ^ì¬‚Ì‚½‚߂̕⏕(F•ª‚¯Aƒ^ƒOƒ`ƒFƒbƒNAetc...)
  • -
  • SSTPƒNƒ‰ƒCƒAƒ“ƒg‚ð\’z‚·‚éê‡‚́AŽ–‘O‚̃^ƒOƒ`ƒFƒbƒN
  • -
-

Žg—pðŒ

-
    -
  • ‚¢‚í‚ä‚éƒtƒŠ[‚Ì”Íáe‚ÉŠÜ‚Ü‚ê‚éƒ\ƒtƒg‚Å‚·B’˜ìŒ ‚Í•úŠü‚µ‚Ä‚¢‚Ü‚¹‚ñBˆÈ‰º‚ÌðŒ‚É‚µ‚½‚ª‚Á‚Ä‚¨Žg‚¢‚­‚¾‚³‚¢B
  • -
  • ŽŽ—p‚Í‚à‚¿‚ë‚ñŽ©—R‚Å‚·‚ªA‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚ðŽg—p‚µ‚½ƒvƒƒOƒ‰ƒ€‚ðŒöŠJ‚·‚éê‡‚́AìŽÒ‚Ɉê•ñ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚±‚ê‚́AƒoƒO‚ª”­Œ©‚³‚ꂽê‡‚ȂǂɘA—‚·‚邽‚߂ƁA’P‚ɍìŽÒ‚ª”cˆ¬‚µ‚Ä‚¨‚«‚½‚¢‚©‚çA‚Å‚·B
  • -
  • Ž©ìƒvƒƒOƒ‰ƒ€‚ÅŽg—p‚·‚éê‡‚É‚¨‚¢‚Ẳü•ÏE‰ü‘¢‚Í‚²Ž©—R‚É‚Ç‚¤‚¼B
  • -
  • ƒRƒ“ƒ|[ƒlƒ“ƒgŽ©‘Ì‚Æ‚µ‚Ă̍Ĕz•z‚́A‰ü•Ï/–¢‰ü•Ï‚Ì•Ê‚âŒ`‘Ô(ƒ\[ƒX/ƒoƒCƒiƒŠ)‚ÉŠÖ‚í‚炸AŒ´‘¥‹ÖŽ~‚µ‚Ü‚·B
  • -
  • ƒhƒLƒ…ƒƒ“ƒg‚È‚Ç‚É‚±‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚Ì’˜ìŒ •\Ž¦‚µ‚ëA‚Æ‚¢‚Á‚½–Ê“|‚È‚±‚Æ‚ð‹­§‚Í‚µ‚Ü‚¹‚ñB‘‚¢‚Ä‚­‚ê‚ê‚Ίì‚Ñ‚Ü‚·‚ªB
  • -
  • ‚¨–ñ‘©‚Å‚·‚ªAƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŽg—p‚µ‚½/‚µ‚È‚©‚Á‚½‚±‚Æ‚É‚æ‚Á‚Ä”­¶‚·‚é‚ ‚ç‚ä‚éÓ”C‚Í‚Æ‚ê‚Ü‚¹‚ñBŽ©ŒÈÓ”C‚Å‚¨Žg‚¢‚­‚¾‚³‚¢B
  • -
-

SYNOPSIS - Šî–{“I‚ÈŽg‚¢•û

-

TagPattern, MetaPatternƒvƒƒpƒeƒB‚ɁA‚³‚­‚çƒXƒNƒŠƒvƒg‚̉ðÍ‚̊‚Æ‚È‚éƒpƒ^[ƒ“‚ðŽw’肵‚Ü‚·B“Y•t‚³‚ê‚Ä‚¢‚éƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ðƒRƒs[‚·‚ê‚ΈꉞOK‚Å‚·B

-

InputStringƒvƒƒpƒeƒB‚ɁAƒXƒNƒŠƒvƒg‚ðŽw’è‚·‚ê‚΁AƒXƒNƒŠƒvƒg‚ª‰ðÍ‚³‚êACount, -MarkUpType, Str‚ÌŠeƒvƒƒpƒeƒB‚ð’Ê‚µ‚ăAƒNƒZƒX‚Å‚«‚Ü‚·B

-

—Ⴆ‚΁Au\t\s[0]‚¢‚ç‚Á‚µ‚á‚¢%‚Ü‚¹A%username‚³‚ñA\s[5]\\300‚Ì‚¨\”ƒ‚¢ã‚°‚É‚È‚è‚Ü‚·‚Ë\ev‚Æ‚¢‚¤•¶Žš—ñ‚ðInputString‚É“ü‚ꂽê‡‚ɂͤCount=10‚Æ‚È‚èAMarkUpType, -StrƒvƒƒpƒeƒB‚ɂ͈ȉº‚̂悤‚È’l‚ª“ü‚è‚Ü‚·B

-

TSsParser‚ł́AIndex‚Å‹æ•Ê‚³‚ê‚éƒXƒNƒŠƒvƒg‘f•ÐA‚‚܂艺‚Ì•\‚É‚¨‚¯‚éŠes‚ðuƒGƒŒƒƒ“ƒgv‚ƌĂԂ±‚Æ‚É‚µ‚Ü‚·B

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IndexStr[Index]MarkUpType[Index]
0\tmtTag
1\s[0]mtTag
2‚¢‚ç‚Á‚µ‚á‚¢%‚Ü‚¹A¦mtStr
3%usernamemtMeta
4‚³‚ñAmtStr
5\s[5]mtTag
6\\300‚Ì‚¨¦mtStr
7\”ƒmtTagErr
8‚¢ã‚°‚É‚È‚è‚Ü‚·‚ËmtStr
9\emtTag
-
    -
  • ‚±‚ê‚̓fƒtƒHƒ‹ƒg‚̃pƒ^[ƒ“‚ðŽg—p‚µ‚½“TŒ^“I‚ȉðÍ‚ÌŒ‹‰Ê‚Å‚ ‚èA‰ðÍŒ‹‰Ê‚̓pƒ^[ƒ“‚É‚æ‚Á‚ĕω»‚µ‚Ü‚·B‹É’[‚ÉŒ¾‚¦‚΁A\w8‚ðƒ^ƒO‚Æ‚µ‚Ä”FŽ¯‚µ‚È‚¢A‚Æ‚¢‚¤‚±‚Æ‚à‰Â”\‚Å‚·B
  • -
  • Str[2]‚ɂ‚¢‚ẮAEscapeInvalidMeta = false‚̏ꍇ‚ÌŒ‹‰Ê‚Å‚·Btrue‚̏ꍇ‚́Au‚¢‚ç‚Á‚µ‚á‚¢\%‚Ü‚¹v‚Æ‚È‚è‚Ü‚·B
  • -
  • Str[6]‚ɂ‚¢‚ẮALeaveEscape = true‚̏ꍇ‚ÌŒ‹‰Ê‚Å‚·Bfalse‚̏ꍇ‚́Au\300‚Ì‚¨v‚Æ‚È‚è‚Ü‚·B
  • -
-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒvƒƒpƒeƒB

-

LeaveEscape: boolean [ŽÀ/Ý][“Ç/‘]

-

ƒfƒtƒHƒ‹ƒg‚Ítrue‚Å‚·BmtStr‚Ő؂èo‚³‚ꂽ’ʏ핶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éA\\ -‚â \% -‚Ì•¶Žš—ñ‚ð•ÏŠ·‚¹‚¸‚ÉŽc‚·‚©‚Ç‚¤‚©Ý’肵‚Ü‚·Bfalse‚É‚·‚邱‚ƂŁA\\ -‚â \% ‚Í1•¶Žš‚É•ÏŠ·‚³‚ê‚ÄmtStrƒGƒŒƒƒ“ƒg‚É‘ã“ü‚³‚ê‚Ü‚·B

-

TSsParser‚ðƒXƒNƒŠƒvƒg‚̐F•ª‚¯‚âAŠëŒ¯ƒ^ƒOƒ`ƒFƒbƒN‚È‚Ç‚ÉŽg—p‚·‚éê‡‚́A•¶Žš—ñ’·‚âƒXƒNƒŠƒvƒg‚»‚Ì‚à‚Ì‚ª•Ï‚í‚ç‚È‚¢‚悤‚Étrue‚É‚µ‚Ü‚·B“ÆŽ©SSTPƒT[ƒoŠJ”­‚̏ꍇ‚Ȃǂ́Afalse‚É‚·‚邱‚Æ‚Å•ÏŠ·‚ÌŽèŠÔ‚ðÈ‚¯‚Ü‚·B

-

•ÏX‚µ‚½ê‡A‚»‚ÌŒ‹‰Ê‚ÍŽŸ‰ñ‚̉ðÍ‚©‚甽‰f‚³‚ê‚Ü‚·B

-

EscapeInvalidMeta: boolean [ŽÀ/Ý][“Ç/‘]

-

ƒfƒtƒHƒ‹ƒg‚Ífalse‚Å‚·BMetaPattern‚É‚æ‚Á‚āA%•¶ŽšˆÈ~‚ªƒƒ^•¶Žš—ñ‚Æ”»’f‚Å‚«‚È‚¢ê‡A%•¶Žš‚ðu\%v‚ɃGƒXƒP[ƒv‚·‚é‚©‚Ç‚¤‚©Ý’肵‚Ü‚·B

-

TSsParser‚ðƒXƒNƒŠƒvƒg‚̐F•ª‚¯‚È‚Ç‚ÉŽg—p‚·‚éê‡‚́A•¶Žš—ñ’·‚ª•Ï‚í‚ç‚È‚¢‚悤‚Éfalse‚É‚µ‚Ü‚·BŒ˜˜S‚ȃXƒNƒŠƒvƒgì¬‚Ì‚½‚ß‚Ì•¶–@ƒ`ƒFƒbƒN‚Ì‚½‚ß‚É‚Ítrue‚É‚µ‚Ü‚·B

-

•ÏX‚µ‚½ê‡A‚»‚ÌŒ‹‰Ê‚ÍŽŸ‰ñ‚̉ðÍ‚©‚甽‰f‚³‚ê‚Ü‚·B

-

TagPattern: TStrings [ŽÀ/Ý][“Ç/‘]
-MetaPattern: TStrings [ŽÀ/Ý][“Ç/‘]

-

‚»‚ꂼ‚êAƒ^ƒOØ‚èo‚µ‚Ì‚½‚߂̃pƒ^[ƒ“Aƒƒ^•¶Žš—ñØ‚èo‚µ‚Ì‚½‚߂̃pƒ^[ƒ“‚Å‚·B•Ê€uƒpƒ^[ƒ“‚ɂ‚¢‚āvŽQÆB•ÏX‚µ‚½ê‡A‚»‚ÌŒ‹‰Ê‚ÍŽŸ‰ñ‚̉ðÍ‚©‚甽‰f‚³‚ê‚Ü‚·B

-

InputString: String [ŽÀ‚Ì‚Ý][“Ç/‘]

-

‚±‚̃vƒƒpƒeƒB‚ɏ‘‚«ž‚ñ‚ŁA‰ðÍ‚·‚ׂ«ƒXƒNƒŠƒvƒg‚ðÝ’肵‚Ü‚·B“ǂݏo‚µ‚̏ꍇ‚͍Ōã‚ɉðÍ‚µ‚½ƒXƒNƒŠƒvƒg‚ª“ü‚Á‚Ä‚¢‚Ü‚·B

-

Count: integer [ŽÀ‚Ì‚Ý][“Ç‚Ì‚Ý]

-

ƒXƒNƒŠƒvƒg‰ðÍŒã‚̃GƒŒƒƒ“ƒg‘”‚ð•Ô‚µ‚Ü‚·BƒXƒNƒŠƒvƒgƒGƒŒƒƒ“ƒg‚ðƒ‹[ƒvˆ—‚·‚éê‡‚̏ãŒÀ’l‚Æ‚µ‚ÄŽg—p‚µ‚Ü‚·B

-

Str[Index: integer]: String [ŽÀ‚Ì‚Ý][“Ç‚Ì‚Ý]

-

‰ðÍŒã‚Ì•¶Žš—ñ‚ð•Ô‚µ‚Ü‚·BÅ‰‚̃GƒŒƒƒ“ƒg‚ÍStr[0]AÅŒã‚̃GƒŒƒƒ“ƒg‚ÍStr[Count-1]‚Å‚·BLeaveExcape, -EscapeInavlidMeta‚Ì—¼ƒvƒƒpƒeƒB‚̉e‹¿‚ðŽó‚¯‚Ü‚·B

-

Extra[Index: integer]: String [ŽÀ‚Ì‚Ý][“Ç/‘]

-

‚²Ž©—R‚É‚¨Žg‚¢‚­‚¾‚³‚¢A‚Ì•¶Žš—ñ‚Å‚·B‰ðÍŒ‹‰Ê‚Ƀƒ‚‚ð‚‚¯‚½‚è‚·‚é—p“r‚É‚Ç‚¤‚¼B

-

MarkUpType[Index: integer]: TSsMarkUpType [ŽÀ‚Ì‚Ý][“Ç‚Ì‚Ý]

-

type TSsMarkUpType = (mtTag, mtMeta, mtTagErr, mtStr);

-

ƒGƒŒƒƒ“ƒg‚ÌŽí—Þ‚ð•Ô‚µ‚Ü‚·BÅ‰‚̃GƒŒƒƒ“ƒg‚ÍMarkUpType[0]AÅŒã‚̃GƒŒƒƒ“ƒg‚ÍMarkUpType[Count-1]‚Å‚·B

-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒCƒxƒ“ƒg

-

OnSsParse: TSsParseEvent

-

TSsParseEvent = procedure (Sender: TObject; const Script: String;
-var Len: integer; var MarkType: TSsMarkUpType; var Extra: String) of object;

-

ƒ^ƒO‚Ü‚½‚̓ƒ^•¶Žš—ñ‚̃pƒ^[ƒ“ƒ}ƒbƒ`ŽŽs‚Ì‘O‚ɌĂяo‚³‚ê‚Ü‚·B‚±‚̃Cƒxƒ“ƒg‚ðŽg—p‚·‚é‚ƁATagPattern, -MetaPattern‚ÌŽd—l‚ł͐؂èo‚¹‚È‚¢ƒ}[ƒNƒAƒbƒv‚ª«—ˆ‚Å‚«‚½ê‡‚ɁAƒXƒNƒŠƒvƒg‚©‚ç‚̃^ƒO‚⃁ƒ^•¶Žš—ñ‚̐؂èo‚µ‚ðŽ©—R‚ɃR[ƒfƒBƒ“ƒO‚Å‚«‚Ü‚·B

-

Script‚͉ðÍ“r’†‚̃XƒNƒŠƒvƒg‚Å‚·B1•¶Žš–Ú‚Í•K‚¸u\v‚Ü‚½‚́u%v‚Æ‚È‚Á‚Ä‚¢‚Ü‚·BLen‚͌Ăяo‚µŽž‚É‚Í0‚ª‘ã“ü‚³‚ê‚Ä‚¢‚Ü‚·B

-

‚±‚̃Cƒxƒ“ƒgƒnƒ“ƒhƒ‰“à‚ŁAScript‚̐擪‚©‚çŽn‚Ü‚é•”•ª‚ð‰ðÍ‚µ‚Ü‚·BƒGƒŒƒƒ“ƒg‚ð‰ðŽß‚Å‚«‚½ê‡‚Í‚»ƒGƒŒƒƒ“ƒg‚Ì’·‚³(ƒoƒCƒg”)‚ðLen(>2)‚ɁAƒ^ƒCƒv‚ðMarkType‚ɁA•K—v‚È‚çExtra‚É•¶Žš—ñ‚ð“ü‚ê‚āAƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰‚ðI—¹‚µ‚Ä‚­‚¾‚³‚¢B‰ðŽß‚Å‚«‚È‚¢ê‡‚ÍLen=0‚̂܂܏I—¹‚·‚ê‚΁A‚»‚̂܂ܒʏí‚̃pƒ^[ƒ“ƒ}ƒbƒ`ŽŽs‚É“ü‚è‚Ü‚·B

-

—v‚́A•¶Žš—ñæ“ª‚©‚炱‚±‚Ü‚Å‚ªƒ^ƒO(ƒƒ^•¶Žš—ñ)‚¾‚æA‚Æ‚¢‚¤‚Ì‚ðŒ©‚Â‚¯‚Ä•Ô‚µ‚Ä‚­‚êA‚Æ‚¢‚¤‚±‚Æ‚Å‚·B

-

Len>1‚Å‚ ‚Á‚Ä‚àAScript‚Ì1•¶Žš–Ú‚ª\‚È‚Ì‚ÉMarkUpType‚ªmtTag‚Å‚àmtTagErr‚Å‚à‚È‚¢ê‡A‚ ‚é‚¢‚ÍScript‚Ì1•¶Žš–Ú‚ª%‚È‚Ì‚ÉMarkUpType‚ªmtMeta‚Å‚È‚¢ê‡‚Í—áŠO‚ª”­¶‚µ‚Ü‚·B

-

ƒŠƒtƒ@ƒŒƒ“ƒX-ƒƒ\ƒbƒh

-

function Match(Str, Pattern: String): integer;

-

SSTP‰ðÍ—p‚̃pƒ^[ƒ“ƒ}ƒbƒ`ƒ“ƒO‚ðs‚¢‚Ü‚·BStr‚̐擪•”•ªAPattern‚ÅŽ¦‚³‚ê‚éƒpƒ^[ƒ“‚ª‘¶Ý‚·‚ê‚΁Aƒ}ƒbƒ`‚µ‚½•”•ª‚̃oƒCƒg”(•¶Žš”‚Å‚Í‚È‚¢)‚ð•Ô‚µ‚Ü‚·Bƒ}ƒbƒ`ƒ“ƒO‚ªŽ¸”s‚µ‚½ê‡‚Í0‚ð•Ô‚µ‚Ü‚·B

-

—Ⴆ‚΁A

-

Match('ABC', 'AB') = 2
-Match('ABC', 'A%.%.') = 3
-Match('A20BC', 'A%D') = 3
-Match('\s[20]', '\s%b') = 6
-Match('\s2', '\s%b') = 0

-

function GetParam(Tag: String; const Index: integer): String;

-

\s[3] ‚â \_c[‚±‚ñ‚É‚¿‚Í] , \q1[#cancel][ƒLƒƒƒ“ƒZƒ‹] -‚Æ‚¢‚Á‚½ƒ}[ƒNƒAƒbƒv‚©‚çAƒXƒNƒEƒFƒAƒuƒ‰ƒPƒbƒg‚Ɉ͂܂ꂽƒpƒ‰ƒ[ƒ^‚ðŽæ‚èo‚µ‚Ü‚·BTag‚ÍŽæ‚èo‚µ‚½‚¢ƒ^ƒO‘S‘́AIndex‚͉½”Ԗڂ̃pƒ‰ƒ[ƒ^‚ðŽæ‚èo‚·‚©A‚ŁA1‚©‚çŽn‚Ü‚è‚Ü‚·B\\ -‚â \] -‚É‚æ‚éƒGƒXƒP[ƒv‚ɑΉž‚µA‚±‚ê‚ç‚̃GƒXƒP[ƒv‚ÍŽ©“®“I‚ÉŒ³‚ÌŒ`‚É–ß‚³‚ê‚Ü‚·B

-

Index‚ªƒ[ƒˆÈ‰º‚̏ꍇAƒpƒ‰ƒ[ƒ^‚ªŽæ‚èo‚¹‚È‚©‚Á‚½ê‡‚Ȃǂɂ́A‹ó•¶Žš—ñ‚ª•Ô‚è‚Ü‚·B

-

GetParam('\s[3]', 1) = '3';
-GetParam('\s[3]', 2) = '';
-GetParam('\j[http://www.yahoo.co.jp/index[1\].html]', 1) = -'http://www.yahoo.co.jp/index[1].html'

-

function EscapeParam(const Param: String): String;

-

\j[] ‚Ì’†‚ɈÀ‘S‚É‘ã“ü‚Å‚«‚é‚悤‚ɁA\ ‚ð \\ -‚ɁA] ‚ð \] -‚É•ÏŠ·‚µ‚½•¶Žš—ñ‚ð•Ô‚µ‚Ü‚·BŒ˜˜S‚ȃXƒNƒŠƒvƒgì¬‚Ì‚½‚߂ɂ͐¥”ñ—˜—p‚·‚é‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B

-

ƒpƒ^[ƒ“‚ɂ‚¢‚Ä

-

TagPattern, MetaPatternƒvƒƒpƒeƒB‚ɁA‚³‚­‚çƒXƒNƒŠƒvƒg‚ð‰ðÍ‚·‚é‚Æ‚«‚̃pƒ^[ƒ“‚ðŽw’肵‚Ü‚·B

-

’ʏí‚̓A[ƒJƒCƒu“¯«‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹‚©‚çƒRƒs[‚·‚ê‚Ζâ‘è‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA«—ˆ‚̃^ƒOŠg’£“™‚Ì‚½‚ß‚É‚±‚ÌŽd—l‚ª‘¶Ý‚µ‚Ü‚·B‚±‚̃pƒ^[ƒ“ƒŠƒXƒgŽ©g‚ðƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚È‚Ç‚©‚ç“ǂݍž‚ނ悤‚É‚·‚邱‚ƂŁAŽÀsƒtƒ@ƒCƒ‹‚ðXV‚¹‚¸‚Ƀ^ƒO‰ðÍ•”‚ðXV‚·‚邱‚Æ‚à‰Â”\‚Å‚·B

-

uƒ^ƒO‚ª\‚ÅŽn‚Ü‚évuƒƒ^•¶Žš—ñ‚ª%‚ÅŽn‚Ü‚évu\\‚â\%‚̓GƒXƒP[ƒvv‚È‚Ç‚Æ‚¢‚Á‚½Šî–{“I‚ÈŽd—l‚ª•ÏX‚É‚È‚ç‚È‚¢ŒÀ‚èAƒ^ƒO‚̒ʏí‚Ì‘Œ¸‚ÉŠÖ‚µ‚ẮAPatternƒvƒƒpƒeƒB‚ð•ÏX‚·‚邱‚ƂŁA‘å’ï‘Ήž‚Å‚«‚é‚ÆŽv‚¢‚Ü‚·B“ÁŽê‚ȏ‘‚«•û‚̏ꍇAƒCƒxƒ“ƒg‚ð—˜—p‚·‚é•û–@‚à‚ ‚è‚Ü‚·B

-

ƒpƒ^[ƒ“‚̏‘‚«•ûŠT—ª

-

TagPattern‚ÌŠes‚ªA1‚‚̃^ƒO‚ɉž“š‚·‚éƒpƒ^[ƒ“‚Å‚·B—Ⴆ‚΁Au\ev‚Æ‚¢‚¤s‚ðTagPatternƒvƒƒpƒeƒB‚ɒljÁ‚·‚邱‚ƂŁAu\ev‚Æ‚¢‚¤ƒ^ƒO‚É”½‰ž‚Å‚«‚é‚悤‚É‚È‚èAu!_cv‚Æ‚¢‚¤s‚ð’ljÁ‚·‚ê‚΁Au\_cv‚Æ‚¢‚¤ƒ^ƒO‚̓Gƒ‰[‚Å‚ ‚éA‚ƉðÍ‚·‚é‚悤‚É‚È‚è‚Ü‚·B

-

ƒpƒ^[ƒ“‚͏ォ‚珇”Ô‚ÉŽŽs‚³‚êAƒ}ƒbƒ`‚µ‚½Žž“_‚ÅŽŽs‚𒆎~‚µ‚Ü‚·B

-

TagPattern‚ÌŠes‚́A\‹L†‚Ü‚½‚Í!‹L†‚ÅŽn‚ß‚Ä‚­‚¾‚³‚¢B\‹L†‚ÅŽn‚Ü‚éƒpƒ^[ƒ“‚́Aƒ}ƒbƒ`‚µ‚½ê‡‚»‚ê‚𐳓–‚ȃ^ƒO‚ð‚µ‚Äˆ—‚µ‚Ü‚·B!‹L†‚ÅŽn‚Ü‚éƒpƒ^[ƒ“‚́Aƒ}ƒbƒ`‚µ‚½ê‡‚»‚ê‚ðƒ^ƒO‚̃Gƒ‰[‚Æ‚µ‚ďˆ—‚µ‚Ü‚·B

-

—Ⴆ‚΁Au\wvƒ^ƒO‚̏ˆ—‚Ì‚½‚߂ɂ́A

-
-

\w%d
- !w%.

-
-

‚Æ‚¢‚¤2s‚ðTagPattern‚ɉÁ‚¦‚é‚Æ‚æ‚¢‚Å‚µ‚傤B‚±‚ê‚ŁA\w9 -“™‚͐³“–‚ȃ^ƒO‚ŁA”ŽšˆÈŠO‚ªw‚ÌŒã‚É‚«‚½ê‡‚Í \w‚  -‚Æ‚¢‚Á‚½‘S‘Ì‚ðƒ^ƒOƒGƒ‰[‚Æ‚µ‚ďˆ—‚·‚éA‚Æ‚¢‚¤ˆÓ–¡‚É‚È‚è‚Ü‚·B

-

MetaPattern‚ÌŠes‚ªA1‚‚̃ƒ^•¶Žš—ñ‚ɉž“š‚·‚éƒpƒ^[ƒ“‚Å‚·B—Ⴆ‚΁uselfnamev‚Æ‚¢‚¤s‚ðMetaPatternƒvƒƒpƒeƒB‚ɒljÁ‚·‚邱‚ƂŁAu%selfnamev‚Æ‚¢‚¤ƒƒ^•¶Žš—ñ‚É”½‰ž‚µ‚Ü‚·BMetaPattern‚̏ꍇ‚́A%ˆÈ~‚É‘±‚­•¶Žš—ñ‚ð‚»‚Ì‚Ü‚Ü‹Lq‚·‚é‚悤‚ÈŠiD‚Å‘åä•v‚Å‚·B

-

ƒ}ƒbƒ`ŽŽs‚̓pƒ^[ƒ“ƒŠƒXƒg‚̏ォ‚珇”Ԃɍs‚í‚ê‚邽‚߁AMetaPatternƒvƒƒpƒeƒB‚ŁA—Ⴆ‚Î -selfname2 ‚Æ‚¢‚¤s‚Í selfname -‚æ‚èã‚É”z’u‚³‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B

-

ƒpƒ^[ƒ“‚Ì‹Lq•û–@

-

³‹K•\Œ»‚Ý‚½‚¢‚È‚à‚Ì‚Å‚·‚ªA‚»‚±‚܂ō‚‹@”\‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‹t‚ɐ³‹K•\Œ»‚Å‚Í•\Œ»‚Å‚«‚È‚¢•\‹L‚ɑΉž‚µ‚Ä‚½‚è‚à‚µ‚Ü‚·‚ªB

-
    -
  • %d ‚Í”CˆÓ‚̐®”1•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B\s%d - ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚́A\s0 ‚â \s3 - ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %D ‚Í”CˆÓ‚̐®”—ñ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B\s[%D] - ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚́A\s[0] ‚â \s[10] - ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %b ‚Í[]‚ň͂܂ꂽ•¶Žš—ñ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B\] - ‚â \\ ‚É‚æ‚éƒGƒXƒP[ƒv‚ɑΉž‚µ‚Ü‚·B\j%b - ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚́A \j[http://www.a.com/index[1\].html] - ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %. ‚Í”CˆÓ‚Ì1•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %m - ‚Í”CˆÓ‚̃Vƒ“ƒOƒ‹ƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %M - ‚Í”CˆÓ‚̃}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
  • -
  • %% ‚́u%v‹L†‚»‚Ì‚à‚̂Ƀ}ƒbƒ`‚µ‚Ü‚·BŽg—p‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‹@‰ï‚Í‚¨‚»‚ç‚­«—ˆ‚à‚ ‚è‚Ü‚¹‚ñB
  • -
  • %‚Ì’¼Œã‚ªAã‹L‚Ì‚¢‚¸‚ê‚Å‚à‚È‚¢•¶Žš‚Å‚ ‚éê‡A‚Æ‚è‚ ‚¦‚¸ - %% - ‚Æ‚µ‚ĉðŽß‚µ‚Ü‚·‚ªA‚±‚̂悤‚ÈŽg‚¢•û‚Í‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B
  • -
  • ‚»‚êˆÈŠO‚Ì•¶Žš‚Í‚·‚ׂĂ»‚Ì•¶Žš‚»‚Ì‚à‚̂Ƀ}ƒbƒ`‚µ‚Ü‚·B\‚àŠÜ‚߁B
  • -
-

ƒ}ƒbƒ`ƒ“ƒOÚ×

-

ƒ}ƒbƒ`ƒ“ƒO‚͈ȉº‚̂悤‚ɍs‚í‚ê‚Ü‚·B

-
    -
  1. ƒ}[ƒNƒAƒbƒv‚ÆŽv‚í‚ê‚éu\v‚Ü‚½‚́u%v‚ðæ“ª‚©‚ç’T‚µ‚Ü‚·Bu\\v‚âu\%v‚̓GƒXƒP[ƒv‚Å‚·‚Ì‚Å“Ç‚Ý”ò‚΂³‚ê‚Ü‚·B‚»‚Ì•”•ª‚܂ł́Aƒ}[ƒNƒAƒbƒv‚Å‚Í‚È‚¢’ʏí‚Ì•¶Žš—ñ‚Å‚·B
  2. -
  3. u%v‚ÅŽn‚Ü‚éê‡‚̓ƒ^•¶Žš—ñ‚̉”\«‚ª‚ ‚é‚̂ŁAƒ}ƒbƒ`ƒ“ƒO‚ðŠJŽn‚µ‚Ü‚·B%ˆÈ‰º‚ª—LŒø‚ȃƒ^•¶Žš—ñ‚Æ‚µ‚ĉðŽß‚Å‚«‚È‚¢ê‡‚́Au%v‚͈Ӗ¡‚ð‚È‚³‚È‚¢’ʏí‚Ì%•¶Žš—ñ‚Æ‚µ‚āA\%‚ɃGƒXƒP[ƒv‚³‚ê‚Ä(EscapeInvalidMeta‚Ő§Œä‰Â”\)‘O‚ÌmtStrƒGƒŒƒƒ“ƒg‚É‚­‚Á‚‚«‚Ü‚·B
  4. -
  5. u\v‚ÅŽn‚Ü‚éê‡‚̃}ƒbƒ`ƒ“ƒO‚ðŠJŽn‚µ‚Ü‚·B\ˆÈ‰º‚ª³‹K‚̃^ƒO‚Æ‚µ‚ĉðŽß‚Å‚«‚½ê‡‚ÍmtTagƒ^ƒCƒv‚Æ‚µ‚āAƒGƒ‰[ƒ^ƒO‚Æ‚È‚Á‚½ê‡‚ÍmtTagErr‚Æ‚µ‚Đ؂èo‚µ‚Ü‚·BTagPattern‚̂ǂ̍s‚É‚àƒ}ƒbƒ`‚µ‚È‚©‚Á‚½ê‡‚́A\‚ÌŽŸ‚Ì1•¶ŽšŠÜ‚߂āAƒGƒ‰[ƒ^ƒO‚Æ‚µ‚Đ؂èo‚µ‚Ü‚·B
  6. -
  7. Å‰‚É–ß‚è‚Ü‚·B
  8. -
-

Žg—p—á - SSTPƒT[ƒo

-

“ÆŽ©SSTPƒT[ƒo\’z•â•‚É—˜—p‚·‚éê‡‚́ALeaveEscape := -false; EscapeInvalidMeta := false; ‚Æ‚·‚é‚ÆŠÈ’P‚Å‚·B

-

SsParser1.InputString := Edit1.Text;
-for i := 0 to SsParser1.Count-1 do begin
-  case SsParser.MarkUpType[i] of
-    mtStr: Memo1.Lines.Add(SsParser.Str[i]);
-    mtTag: {ƒ^ƒOŠÖ˜A‚̏ˆ—}
-    mtTagErr: Memo1.Lines.Add(SsParser.Str[i]); //ˆ—‚¹‚¸‚É‚»‚Ì‚Ü‚Ü•\Ž¦
-    mtMeta: {ƒƒ^•¶Žš—ñ•ÏŠ·Œê•\Ž¦}
-  end;
-end;

-

Žg—p—á - ƒXƒNƒŠƒvƒgF•ª‚¯HTMLì¬

-

F•ª‚¯‚ª–Ú“I‚̏ꍇAƒXƒNƒŠƒvƒg‚ª•Ï‚í‚éS”z‚Ì‚È‚¢‚悤ALeaveEscape -:= true; EscapeInvalidMeta := false;‚Æ‚µ‚Ü‚·B

-

ˆÈ‰º‚́Aƒ^ƒO•”•ª‚ɐF‚ðÝ’è‚·‚éHTMLƒ}[ƒNƒAƒbƒv‚Å‚·B

-

var Html: String;
-//
-SsParser1.InputString := Edit1.Text;
-for i := 0 to SsParser1.Count-1 do begin
-  case SsParser.MarkUpType[i] of
-    mtStr: Html := Html + SsParser.Str[i];
-    mtTag: Html := Html + '<font color="green">' -+ SsParser.Str[i] + '</font>';
-    mtTagErr: Html := Html + '<font color="red">' -+ SsParser.Str[i] + '</font>';
-    mtMeta: Html + '<font color="blue">' + -SsParser.Str[i] + '</font>';
-  end;
-end;
-Edit2.Text := Html;

-

Žg—p—á - OnSsParseŽg—p—á

-

ˆÈ‰º‚́AOnSsParseƒCƒxƒ“ƒg‚ÌŽg—p—á‚Å‚·B‚à‚Á‚Æ‚à’Pƒ‚ɁA\uƒ^ƒO‚𔻒肵‚Ü‚·BTagPattern‚Ì1s–Ú‚É -\u ‚Ə‘‚¢‚½ê‡‚Æ“¯‚¶“®ì‚Æ‚È‚è‚Ü‚·B

-

procedure TForm1.SsParser1SsParse(Sender: TObject; const Script: -String;
-  var Len: integer; var MarkType: TSsMarkUpType; var Extra: String)
-begin
-  if Pos('\u', Script) = 1 then begin
-    Len := Length('\u');
-    MarkType := mtTag;
-  end;
-end;

-

Žg—p—á - ƒT[ƒtƒBƒX”»’è

-

ˆê”ԍŌã‚̃T[ƒtƒBƒX‚ª‰½‚É‚È‚é‚©‚𔻒肵‚Ü‚·B‚½‚¾‚µ–{—ˆ‚́A\h, -\u‚É‚æ‚éØ‚è‘Ö‚¦‚È‚Ç‚ª•K—v‚Å‚µ‚傤B

-

var Last: integer;
-//
-SsParser1.InputString := Edit1.Text;
-for i := 0 to SsParser1.Count-1 do begin
-  if SsParser.Match(SsParser.Str[i], '\s%b') > 0 then begin
-    try
-      Last := -StrToInt(SsParser.GetParam(SsParser.Str[i]));
-    except
-      on EConvertError do begin end;
-    end;
-  end;
-end;

-

”’ˆÓ

-

Ä‰ðÍ‚ɂ‚¢‚Ä

-

with SsParser1 do InputString := InputString;

-

‚Æ‚·‚邱‚ƂŁAEscapeInvalidMeta“™‚̉ðÍƒIƒvƒVƒ‡ƒ“‚âAMetaPattern“™‚̉ðÍƒpƒ^[ƒ“‚ª•Ï‰»‚µ‚½‚Æ‚«‚ɍĉðÍ‚ðs‚¦‚Ü‚·B•Ï‚ȏ‘‚«•û‚Å‚·‚ªB

-

‰üs•¶Žš‚ɂ‚¢‚Ä

-

InputString‚ɉüs•¶Žš‚â‚»‚Ì‘¼‚Ì‹ó”’•¶Žš‚ªŠÜ‚Ü‚ê‚Ä‚¢‚½ê‡A’ʏí‚Ì•¶Žš‚Æ“¯‚¶‚悤‚Ɉµ‚¢‚Ü‚·B‚‚܂èA‰üs•¶Žš‚¾‚©‚ç‚Æ‚¢‚Á‚Ä“Á‚ɉ½‚ç‚©‚̏ˆ—‚ªs‚í‚ꂽ‚èA‹t‚ɏˆ—‚̎ז‚‚É‚È‚Á‚½‚è‚·‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB‰üs‚ð -\n ‚ɕύX‚µ‚½‚¢A‚Ȃǂ̏ꍇ‚Í‚ ‚ç‚©‚¶‚ß -StringReplace ‚È‚Ç‚ð—˜—p‚µ‚ÄŽ©•ª‚Å•ÏŠ·‚µ‚Ä‚­‚¾‚³‚¢B

-

ƒ^ƒOƒGƒ‰[‚Ì—˜—p‚ɂ‚¢‚Ä

-

TagPattern‚ōs“ª‚ª ! -‚ÅŽn‚Ü‚éƒpƒ^[ƒ“‚ðŽw’è‚·‚邱‚Æ‚âAOnSsParseƒCƒxƒ“ƒg‚ÅmtTagErrƒGƒŒƒƒ“ƒg‚ð•Ô‚·Ž–‚ŁA\‚ÅŽn‚Ü‚é”CˆÓ‚Ì•¶Žš—ñ‚ðƒ^ƒOƒGƒ‰[‚ÆŒ©‚È‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚Ü‚½ATagPattern‚Ń}ƒbƒ`‚µ‚È‚©‚Á‚½ê‡‚́A\‹L†‚ÌŽŸ‚Ì1•¶Žš‚Ü‚Å‚ðŠÜ‚߂ă^ƒOƒGƒ‰[‚Æ‚µ‚Ä2•¶Žš•ªØ‚èo‚µ‚Ü‚·B‚±‚Ì—˜—p•û–@‚Å‚·‚ªA

-
    -
  • ƒXƒNƒŠƒvƒg‚̃`ƒFƒbƒN‚É—˜—p‚·‚éê‡ATagPattern‚ð•ÏX‚·‚鎖‚ŁASSTPŒ ŒÀ‚Å“®‚©‚È‚¢ƒ^ƒO‚̃`ƒFƒbƒN‚ðs‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
  • -
  • SSTPƒT[ƒo\’z‚̏ꍇAƒGƒ‰[ƒ^ƒO‚Í‚»‚̂܂܃ZƒŠƒt‚Æ“¯‚¶Œ`‚ŏo—Í‚·‚é‚悤‚É‚·‚ê‚΁Aƒ^ƒO‚̃}[ƒNƒAƒbƒvƒGƒ‰[‚ÉŠÖ‚µ‚ď_“î‚È•œ‹A‚ª‚Å‚«‚Ü‚·(ã‚Ì—áŽQÆ)B
  • -
-

‰ðÍ‚ɂ‚¢‚Ä‚Ì’ˆÓ

-

u”CˆÓvphase 40.01ˆÈ‘O‚̉ðÍ–â‘è

-

u‚ ‚êˆÈŠO‚̉½‚© with ”CˆÓ phase 40v‚ɂ́AƒXƒNƒŠƒvƒg‰ðÍ‚ÉŠÖ‚µ‚āAˆÈ‰º‚É‹“‚°‚é–â‘肪‚ ‚è‚Ü‚·BŒ´ˆö‚Í–Ê“|‚È‚Ì‚Å‹“‚°‚Ü‚¹‚ñ‚ªB

-
    -
  • [SSTP‚̏ꍇ] \\30 ‚Æ‚¢‚Á‚½•¶Žš—ñ‚Í–{—ˆ - \\ ‚ðƒGƒXƒP[ƒv‚ƉðŽß‚·‚é‚ׂ«‚Å‚·‚ªA\3 - ‚ªŠëŒ¯ƒ^ƒO‚Ì‚½‚߁A\\30 ‚ª \0 ‚É•ÏŠ·‚³‚ê‚ÄŽÀs‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·B
  • -
  • [SSTP‚̏ꍇ] ‚ð\- ‚ȂǁA‰~‹L†‚Ì‘O‚É“Á’è‚Ì•¶Žš‚ª—ˆ‚éê‡AŠëŒ¯ƒ^ƒOƒ`ƒFƒbƒN‚ð‚·‚è”²‚¯‚Ü‚·B
  • -
  • \Š¿ ‚â \wŠ¿ ‚Æ‚¢‚Á‚½‹Lq‚Å•¶Žš‰»‚¯‚ª¶‚¶‚Ü‚·B
  • -
  • \”\- ‚â \w”\- ‚Æ‚¢‚Á‚½‹Lq‚Ŋ댯ƒ^ƒO‚ªŽÀs‚³‚ê‚éê‡‚ª‚ ‚è‚Ü‚·B
  • -
  • ”\%selfname ‚Æ‚¢‚Á‚½‹Lq‚ŁA%selfname - ‚ª³‚µ‚­•ÏŠ·‚³‚ê‚Ü‚¹‚ñB
  • -
  • \\%selfname ‚Æ‚¢‚Á‚½‹Lq‚ŁA%selfname - ‚ª³‚µ‚­•ÏŠ·‚³‚ê‚Ü‚¹‚ñB
  • -
  • \j[http://www.Œ].com/] ‚Æ‚¢‚Á‚½‹Lq‚ŁAuŒ]v‚Ì2ƒoƒCƒg–Ú‚ª - ] - ‹L†‚ƃR[ƒh‚ª“¯‚¶‚Å‚ ‚邽‚߉ðÍƒGƒ‰[‚ð‹N‚±‚·ê‡‚ª‚ ‚è‚Ü‚·B\q - ‚à“¯—l‚Å‚·B
  • -
  • ƒXƒNƒŠƒvƒg’†‚̉üs‚ªA\‹L†‚Æ“¯‚¶ˆÓ–¡‚ðŽ‚Á‚Ä‚µ‚Ü‚¤‚±‚Æ‚ª‚ ‚è‚Ü‚·B
  • -
  • \w\\- - ‚Æ‚¢‚Á‚½‹Lq‚ŁAŠëŒ¯ƒ^ƒO‚ªƒuƒƒbƒN‚³‚ꂸ‚ÉŽÀs‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·B(‚±‚ê‚͏‰Šúdeveloper's - test‚É‚àŽc‚Á‚Ä‚¢‚½–â‘è)
  • -
-

TSsParser‚Æ‚ÍŠÖ˜A‚µ‚Ü‚¹‚ñ‚ªA%songname %enamyname -“™‚ªŠëŒ¯ƒ^ƒO‚ðŠÜ‚Þ•¶Žš—ñ‚É•ÏŠ·‚³‚ꂽê‡‚É‚»‚Ì‚Ü‚ÜŽÀs‚³‚ê‚éA‚Æ‚¢‚Á‚½–â‘è“_‚à‚ ‚è‚Ü‚·BÅV”łł͈ȏã‚Ì–â‘è‚Í‚·‚×‚Ä‰ðŒˆ‚³‚ê‚Ä‚¢‚Ü‚·B

-

TSsParser‚͈ȏã‚Ì–â‘è“_‚ðŠÜ‚Ü‚È‚¢‚Í‚¸‚Å‚·(ƒpƒ^[ƒ“‚̏‘‚«•û‚É‚æ‚Á‚Ä‚Í•Ê‚Å‚·‚ª)‚̂ŁATSsParser‚̉ðÍ‚́Au‰½‚© -phase inverse 22.00vˆÈ~ŒÝŠ·A‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·BPhase40.01ˆÈ‘O‘Ήž‚ðŽ‹–ì‚É“ü‚ꂽƒvƒƒOƒ‰ƒ€ì¬‚ŃZƒLƒ…ƒŠƒeƒB‚ɍl—¶‚µ‚½‚¢ê‡Aã‚É‹“‚°‚½–â‘è“_‚ɑ΂µ‚ÄŽ©—͂őΉž‚µ‚Ä‚­‚¾‚³‚¢B

-

TSsParser‚Í“ÆŽ©SSTPƒT[ƒoì¬•â•‚àŽ‹–ì‚É‚¢‚ꂽƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·‚̂ŁAã‹L‚Ì–â‘è‚ɑ΂µ‚đΉž‚·‚é—\’è‚Í‚ ‚è‚Ü‚¹‚ñB

- - - - -- 2.11.0