Error MSG : CXXABI_1.3.8 not found
아래 사이트에서 p7zip rpm install 한다.
https://centos.pkgs.org/7/epel-x86_64/p7zip-16.02-2.el7.x86_64.rpm.html
rpm -Uvh p7zip-xxx.xxx.rpm
Install Success!!!!!!!
2018년 2월 8일 목요일
2014년 12월 3일 수요일
WIn7 Codetyphon 5.1 install / uninstall Administrator Privileges problem
Codetyphon install / uninstall Administrator Privileges problem
1. check Server Service run
- Window Key + R
- services.msc execute
- Server Service run
2. continue install or uninstall
end.... :)
2014년 3월 19일 수요일
[Lazarus] Linux Console Application에서 Timer 사용하기
uses
...., fptimer;
FTimer : TFPTimer;
...
...
..
FTimer := TFPTimer.Create;
FTimer.Interval := 1000;
FTimer.OnTimer := @OnTimer;
FTimer.Enabled := true;
..
..
Good!!!! Lazarus!!
2013년 6월 11일 화요일
선택한 폴더 경로가 하위 폴더에 포함되는지 여부
선택한 폴더가 하위 폴더에 포함 되는지 여부....
function DirectoryPos(sOldPath, sNewPath: string): boolean;
var
oStr1, oStr2 : TStrings;
I: Integer;
J: Integer;
bFlag: boolean;
begin
oStr1 := TStringList.Create;
oStr2 := TStringList.Create;
bFlag := false;
try
oStr1.StrictDelimiter := true;
oStr2.StrictDelimiter := true;
oStr1.Delimiter := '\';
oStr2.Delimiter := '\';
oStr1.DelimitedText := FsFirstSelect;
oStr2.DelimitedText := FsSecondSelect;
for I := 0 to oStr1.Count - 1 do begin
if I > oStr2.Count -1 then begin
bFlag := false;
break;
end;
if oStr1[i] = oStr2[i] then begin
// 같으면 동일한 위치
bFlag := true;
continue;
end else begin
// 다르면 다른 위치
bFlag := false;
break;
end;
end;
result := bFlag;
finally
oStr1.Free;
oStr2.Free;
end;
end;
2013년 1월 16일 수요일
Embedded webbrowser don't closed
Embedded webbrowser don't closed
아래와 같이 WindowClosing 이벤트에 Cancel값을 항상 True로 주면 창이 닫히는 Tag를 타지 않음.
procedure TForm1.EmbeddedWB1WindowClosing(ASender: TObject;
IsChildWindow: WordBool; var Cancel: WordBool);
begin
cancel := true;
end;
2012년 8월 20일 월요일
GettickCount64
흔히 서버어플을 만들다 보면 GettickCount를 사용하는 코드들이 있는데
장시간 운영중인 운영체제에서는 해당함수가 -1을 리턴하는경우가 있다.
Delphi2010은 Cardinal 값으로 반환 받는데 cardinal이라면 약 49 일이후에는 GettickCount가
엉뚱한 값을 내뱉는 경우가 발생하여 코드에 따라 예기치 않은 동작을 보이거나 심지어
Access Violation까지 뱉어내기도 한다.
아래 코드를 이용하면 GetTickCount64 함수를 이용할 수 있는데
무려 약 2억9천2백4십7만천2백8년째 가동중인것까지 사용이 가능하다.
출처 : http://www.delphipraxis.net/711170-post5.html
Unit GTCUnit;
// (c) 1997-2007 by FNS Enterprize's (FNSE.de)
// 2003-2007 by himitsu @ Delphi-PRAXiS.de
Interface
Uses Windows;
Var GetTickCount64: Function(): UInt64; StdCall;
Implementation
Function _GetTickCount64: UInt64; StdCall;
Var Freq, Ticks: UInt64;
Begin
If QueryPerformanceFrequency(Int64(Freq))
and QueryPerformanceCounter(Int64(Ticks))
and (Int64(Freq) > 0) Then Begin
If Ticks >= UInt64(-1) div 1000 Then Result := Ticks div (Freq div 1000)
Else Result := (Ticks * 1000) div Freq;
End Else Result := 0;
End;
Initialization
GetTickCount64 := GetProcAddress(GetModuleHandle('Kernel32.dll'), 'GetTickCount64');
If @GetTickCount64 = nil Then GetTickCount64 := @_GetTickCount64;
End.
사용예
Uses Windows, GTCUnit;
.....
Initialization
GetTickCount64 := GetProcAddress(GetModuleHandle('Kernel32.dll'), 'GetTickCount64');
If @GetTickCount64 = nil Then GetTickCount64 := @_GetTickCount64;
End.
사용예
Uses Windows, GTCUnit;
.....
....
Var C, C2: UInt64;
Begin
C := GetTickCount64();
Sleep(3000);
C2 := GetTickCount64();
Label1.Caption := IntToStr(C2 - C);
End;
Begin
C := GetTickCount64();
Sleep(3000);
C2 := GetTickCount64();
Label1.Caption := IntToStr(C2 - C);
End;
2012년 5월 23일 수요일
VirtualstringTree CheckState
VirtualStringTree의 체크 박스를 강제로 체크 되도록 하려면 아래와 같이 하면 된다.
키포인트는
TVirtualStringTree(Sender).CheckState[oHitInfo.HitNode] := csUncheckedNormal;
위와 같이 해야 정상적으로 체크 및 언체크 된다.
var
oHitInfo : THitInfo;
nTmp1 : TCheckState;
bTmp1 : boolean;
begin
if button <> mbLeft then exit;
TVirtualStringTree(Sender).GetHitTestInfoAt(x-TVirtualStringTree(Sender).OffsetXY.X
,y - TVirtualStringTree(Sender).OffsetXY.Y,false,oHitInfo);
if oHitInfo.HitNode = nil then exit;
if oHitInfo.HitColumn = 0 then exit;
// vstBookMarkChecking(Sender: TBaseVirtualTree;
// Node: PVirtualNode; var NewState: TCheckState; var Allowed: Boolean);
bTmp1 := true;
if oHitInfo.HitNode.CheckState = csCheckedNormal then begin
nTmp1 := csUncheckedNormal;
//oHitInfo.HitNode.CheckState := nTmp1;
TVirtualStringTree(Sender).CheckState[oHitInfo.HitNode] := csUncheckedNormal;
TVirtualStringTree(Sender).InvalidateNode(oHitInfo.HitNode);
TVirtualStringTree(Sender).RepaintNode(oHitInfo.HitNode);
end else begin
nTmp1 := cscheckedNormal;
//oHitInfo.HitNode.CheckState := nTmp1;
TVirtualStringTree(Sender).CheckState[oHitInfo.HitNode] := cscheckedNormal;
TVirtualStringTree(Sender).InvalidateNode(oHitInfo.HitNode);
TVirtualStringTree(Sender).RepaintNode(oHitInfo.HitNode);
end;
피드 구독하기:
글 (Atom)