2015-04-06

Google App Engine memcache 測試

環境:

  • Google App Engine - 1.9.18
  • Python-2.7

# -*- coding: utf-8 -*-
#!/usr/bin/env python2.7
import webapp2
import urllib2
import json

from google.appengine.api import memcache
from google.appengine.ext.webapp.util import run_wsgi_app
   
class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
       
        r = urllib2.urlopen('http://mis.twse.com.tw/stock/api/getIndustry.jsp')
        j = json.loads(r.read())
        for n in range(0,len(j['tse'])):
            memcache.add(key=j['tse'][n]['code'], value=j['tse'][n]['name'], namespace='tse')
           
        for n in range(0,len(j['otc'])):
            memcache.add(key=j['otc'][n]['code'], value=j['otc'][n]['name'], namespace='otc')
       
        self.response.out.write(memcache.get(key='01', namespace='tse'))
        self.response.out.write(memcache.get(key='01', namespace='otc'))

2015-02-21

Delphi 讀取證券交易所股票資訊JSON格式

環境:

  • Win7
  • Delphi XE4

uses IdHTTP, Data.DBXJSON;
...
...


procedure TForm1.Button1Click(Sender: TObject);
var
  H: TIdHTTP;
  JSON: String;
  JO: TJSONObject;
  JV: TJSONValue;
  JP: TJSONPair;
begin
  H:=TIdHTTP.Create(nil);
  H.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)';
  JSON:=H.Get('http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_3673.tw');
  JO := TJSONObject.ParseJSONValue(JSON) as TJSONObject;
  JP := JO.Get(0);
  ShowMessage(JP.ToString);
  ShowMessage(JP.JsonString.Value);
  JV:=(JP.JsonValue as TJSONArray).Get(0);
  ShowMessage((JV as TJSONObject).Get('n').JsonValue.Value);
  FreeAndNil(JO);
  FreeAndNil(H);
end;


2015-02-11

一次清除 GroupBox 裡所有 CheckBox.Checked 狀態

procedure TMainForm.btnClearClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to GB2.ControlCount-1 do
    if GB2.Controls[i].ClassNameIs('TCheckBox') then
      TCheckBox(Gb2.Controls[i]).Checked:=False;
end;

2015-02-09

動態設定 FastReport frxReport 資料來源

procedure setRepDataSource;
var
  DB : TfrxADODatabase;
  Query: TfrxADOQuery;
begin
  with Main.frxReport1 do begin
    DB := TfrxADODatabase(FindObject('ADODatabase1'));
    DB.Connected := False;
    DB.DatabaseName := DM.ADOC1.ConnectionString;
    DB.Connected := True;

    Query := TfrxADOQuery(FindObject('ADOQuery1'));
    Query.Close;
    Query.SQL.Text:=DM.ADODataSet1.CommandText;
    Query.Open;
  end;
end;

2015-02-07

Delphi MainMenu 字型放大及Menu Checked 提示圖示不見解決方法

Delphi 預設 Menu 字型大小為8,想把它放大為12只要2個步驟即可:
  1. 在Project Source 中加上 Screen.MenuFont.Size:=12; 
  2. MainMenu -> OwnerDraw -> True
Menu字型放大後,點選MenuItem後若有設Checked屬性,會發現無法正常顯示提示圖示,原先想以ImageList顯示圖示為解決方案,後來發現只要加入ImageList並指定給MainMenu後即可解決這個問題,不必載入Bitmap icon也可正常運作:
  1. 加入 ImageList
  2. MainMenu -> Images -> ImageList1