반응형

컴파일중 에러 날때

 

Make sure to call FirebaseApp.initializeApp(Context) first

 

 

Gradle Scrips -> build.gradle

 

classpath 'com.google.gms:google-services:4.1.0'

=>

classpath 'com.google.gms:google-services:4.0.1' 변경후 sync

 

반응형

'program' 카테고리의 다른 글

opencv  (0) 2016.07.13
...encode / decode Base64 string?  (0) 2016.05.26
xml mapper 사용  (0) 2016.02.05
엑셀 색상(Columns.Interior.ColorIndex)  (0) 2016.01.22
랜카드 물리적 주소 가져오기(jvcl 다운로드링크)  (0) 2016.01.20
반응형

http://opencv.org/downloads.html


참고자료 

http://fona.tistory.com/entry/OpenCV-249-설치-및-Visual-Studio-2010-개발-환경-설정

반응형
반응형

...encode / decode Base64 string?


http://www.swissdelphicenter.ch/torry/showcode.php?id=1524




onst
  
Codes64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/';

function Encode64(S: string): string;
var
  
i: Integer;
  a: Integer;
  x: Integer;
  b: Integer;
begin
  
Result := '';
  a := 0;
  b := 0;
  for i := 1 to Length(s) do
  begin
    
x := Ord(s[i]);
    b := b * 256 + x;
    a := a + 8;
    while a >= 6 do
    begin
      
a := a - 6;
      x := b div (1 shl a);
      b := b mod (1 shl a);
      Result := Result + Codes64[x + 1];
    end;
  end;
  if a > 0 then
  begin
    
x := b shl (6 - a);
    Result := Result + Codes64[x + 1];
  end;
end;

function Decode64(S: string): string;
var
  
i: Integer;
  a: Integer;
  x: Integer;
  b: Integer;
begin
  
Result := '';
  a := 0;
  b := 0;
  for i := 1 to Length(s) do
  begin
    
x := Pos(s[i], codes64) - 1;
    if x >= 0 then
    begin
      
b := b * 64 + x;
      a := a + 6;
      if a >= 8 then
      begin
        
a := a - 8;
        x := b shr a;
        b := b mod (1 shl a);
        x := x mod 256;
        Result := Result + chr(x);
      end;
    end
    else
      
Exit;
  end;
end;

반응형
반응형

XMLTransform1


사용방법 참고 링크

http://www.360doc.com/content/12/0327/14/7389824_198264772.shtml


반응형
반응형

worksheet.Range['A3','BE5'].Columns.Interior.ColorIndex := 10; <= 색상지정




반응형
반응형

http://sourceforge.net/projects/jvcl/files/




try

          Addresses := TStringList.Create;

          JclSysInfo.GetMacAddresses('', Addresses);

          Writeln(Addresses.Text);

          Addresses.Free;

except

     on E: Exception do

          Writeln(E.ClassName, ': ', E.Message);

end;

반응형

'program' 카테고리의 다른 글

xml mapper 사용  (0) 2016.02.05
엑셀 색상(Columns.Interior.ColorIndex)  (0) 2016.01.22
Ethernet 랜카드의 MAC adress 구하기  (0) 2016.01.20
delphi + xml 만들기, 읽기  (0) 2016.01.08
Delphi에서 WebBrowser을 이용하여 popup이용  (0) 2015.08.13
반응형

출처 : http://www.howto.pe.kr

// Call CoCreateGuid. The last six bytes are equal to the mac address of
// the Ethernet card. (Note that if you have more than one NIC in your
// computer, you'll get the mac address of one of them, but you can't
// easily control which one.)

// Sneeky... I like it! This will work quite neatly on systems without an
// ethernet card as well. AFAIK this part of the GUID is constant even if you
// only have PPP or even no-networking installed. A useful source of machine
// unique IDs...makes you wonder what the fuss about the PIII ID was about(not
// that I think it's a good idea ;)

// Tip: 델파이 IDE에서 Ctrl-Shift-G 를 눌러보세요...
// GUID가 생성 되는데 뒤에 6바이트(2자리씩 12글자) 는 네트워크 환경이
// 있다면 mac-address 와 같습니다
// PPP or even no-networking

function GetNicAddr: AnsiString;
const
  GUID_MAX = 72;
var
  guid: TGuid;
  buf: array[0..GUID_MAX] of WideChar;
begin
  CoCreateGuid(guid); <= @guid 수정
  StringFromGUID2(guid, buf, GUID_MAX);
  Result := Copy(WideCharToString(buf),26,12);
end;


--> 맥어드레스가 인터넷이 연결될때마다 바뀜

     즉 랜카드 물리적 주소가 아님

    

반응형
반응형

출처 : http://wwwi.tistory.com/trackback/175




델파이에서 XMLDocument 컴포넌트로 XML파일을 읽고 쓰는 방법은
말로 설명하기는 좀 어렵고 그냥 소스를 보는 것이 알기 쉬울 것같다.

먼저 uses에  XMLDoc, XMLIntf을 추가한다.

■ XML 파일 쓰기

// XML 파일 만들고 쓰기
procedure TForm1.Button1Click(Sender: TObject);
Var
  xdSoft : TXMLDocument;
  xnRoot  : IXMLNode;
  xnChild : IXMLNode;
  xnGrandchild : IXMLNode;
begin

  // XML Document 만들기
  xdSoft := TXMLDocument.Create(Application);
  xdSoft.Active := True;
  xdSoft.Encoding:= 'euc-kr';

  // 루트 노드 만들기
  xnRoot := xdSoft.AddChild('SoftList');
  // 노드에 속성 설정
  xnRoot.Attributes['LatestUpdate'] := FormatDateTime('YYYY/MM/DD', Now);


  // 테스트 데이터 추가

###################################################################### //

  // 노드 밑에 노드 만들기
  xnChild := xnRoot.AddChild('Soft');
  xnChild.Attributes['Soft_name'] := 'PhotoSharp';

  xnGrandchild := xnChild.AddChild('Detail');
  xnGrandchild.Attributes['maker'] := 'Adove';
  xnGrandchild.Attributes['section']  := 'Drawing tool';
  xnGrandchild.Attributes['Price']  := 5000;

  xnGrandchild := xnChild.AddChild('Extra');
  xnGrandchild.Attributes['name'] := 'toy';
  xnGrandchild.Attributes['note']  := 'for child';

  xnGrandchild := xnChild.AddChild('Stock');
  // 노드 값 설정
  xnGrandchild.NodeValue := 100;

  // ---------------------------------------------------------------------- //

  xnChild := xnRoot.AddChild('Soft');
  xnChild.Attributes['Soft_name'] := 'OverOffice';

  xnGrandchild := xnChild.AddChild('Detail');
  xnGrandchild.Attributes['maker'] := 'OverSoft';
  xnGrandchild.Attributes['section']  := 'office tool';
  xnGrandchild.Attributes['Price']  := 2000;

  xnGrandchild := xnChild.AddChild('Extra');
  xnGrandchild.Attributes['name'] := 'notebook';
  xnGrandchild.Attributes['note']  := 'no comment';

  xnGrandchild := xnChild.AddChild('Stock');
  xnGrandchild.NodeValue := 50;

  // ###################################################################### //

  // XML Document 저장하기
  xdSoft.SaveToFile('C:\Test.Xml');
  xdSoft.Free;

end;

■ 만들어진 XML 파일

<?xml version="1.0" encoding="euc-kr" ?> 
<SoftList LatestUpdate="2007-10-12">
  <Soft Soft_name="PhotoSharp">
    <Detail maker="Adove" section="Drawing tool" Price="5000" /> 
    <Extra name="toy" note="for child" /> 
    <Stock>100</Stock> 
  </Soft>
  <Soft Soft_name="OverOffice">
    <Detail maker="OverSoft" section="office tool" Price="2000" /> 
    <Extra name="notebook" note="no comment" /> 
    <Stock>50</Stock> 
  </Soft>
</SoftList>

■ XML 파일 읽기

// XML 파일 읽어오기
procedure TForm1.Button2Click(Sender: TObject);
Var
  xdSoft : TXMLDocument;
  xnChild : IXMLNode;
  xnGrandchild : IXMLNode;
  i : Integer;
  j : Integer;
  k : Integer;
  sMsg : string;
  sTest : string;
begin

  // XML Document 만들기
  xdSoft := TXMLDocument.Create(Application);

  // XML Document 불러오기
  xdSoft.LoadFromFile('C:\Test.Xml');
  xdSoft.Active := True;

  // 루트 노드가 없을 경우 종료
  if xdSoft.ChildNodes.First = nil then Begin
    Exit;
  End;

  // 루트에 딸려있는 노드 분
  For i := 0 To xdSoft.DocumentElement.ChildNodes.count - 1 Do
  Begin
    sMsg := '';
    sTest := '';

    xnChild := xdSoft.DocumentElement.ChildNodes[i];
    xnGrandchild := xnChild.ChildNodes[0];

    // Soft 노드의 첫번째 노드의 속한 attribute 분
    For j :=0 To xnGrandchild.AttributeNodes.Count - 1 Do
    begin

    sMsg := sMsg +
      '    ' + xnGrandchild.AttributeNodes.Get(j).NodeName + ' : ' +
      xnGrandchild.AttributeNodes.Get(j).NodeValue + #13

    end;
    sTest := sTest + xnChild.NodeName + ' : ';
    sTest := sTest + xnChild.AttributeNodes.Get(0).NodeValue + #13;

    xnGrandchild := xnChild.ChildNodes[2];

    ShowMessage(
      sTest + #13 +
      sMsg + '    ----------' + #13 +
      '    ' + xnGrandchild.NodeName + ' : ' +
      xnGrandchild.NodeValue
    );

  End;

  xdSoft.Free;

end;

개인적으로 생각하기에는 XML Data Binding보다 XML Documnet 컴포넌트를 
쓰는것이 더 깔끔하게 프로그램을 만들 수 있을 것같다.

반응형

+ Recent posts