锘??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕不卡亚洲,亚洲中文久久精品无码ww16,伊人久久五月丁香综合中文亚洲http://www.tkk7.com/alvin/category/16873.html瓚呯駭澶ц彍楦燂紝姣忓ぉ瑕佽嚜寮猴紒zh-cnSun, 22 May 2011 18:34:16 GMTSun, 22 May 2011 18:34:16 GMT60浠庡崈鍗冮潤鍚殑姝岃瘝鏈嶅姟鍣ㄦ煡璇㈤煶涔愮殑 LRC 姝岃瘝 [Java]http://www.tkk7.com/alvin/archive/2011/05/02/java-ttplayer-lrc-get.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Mon, 02 May 2011 08:50:00 GMThttp://www.tkk7.com/alvin/archive/2011/05/02/java-ttplayer-lrc-get.htmlhttp://www.tkk7.com/alvin/comments/349387.htmlhttp://www.tkk7.com/alvin/archive/2011/05/02/java-ttplayer-lrc-get.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/349387.htmlhttp://www.tkk7.com/alvin/services/trackbacks/349387.html.....  闃呰鍏ㄦ枃

]]>
[瀵煎叆]Java 鍐滃巻http://www.tkk7.com/alvin/archive/2008/12/30/249045.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Mon, 29 Dec 2008 19:17:00 GMThttp://www.tkk7.com/alvin/archive/2008/12/30/249045.htmlhttp://www.tkk7.com/alvin/comments/249045.htmlhttp://www.tkk7.com/alvin/archive/2008/12/30/249045.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/249045.htmlhttp://www.tkk7.com/alvin/services/trackbacks/249045.html 涓嬮潰鏄埄鐢ㄦ綾誨仛鐨勪竴涓湀鍘嗕緥瀛?

婧愭枃浠?鐐瑰嚮涓嬭澆
鏂囩珷鏉ユ簮:  http://www.ialvin.cn/blog/article-150.xml

]]>
[瀵煎叆]綆鏄?JSP 璁哄潧婧愮爜http://www.tkk7.com/alvin/archive/2008/12/30/249042.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Mon, 29 Dec 2008 19:17:00 GMThttp://www.tkk7.com/alvin/archive/2008/12/30/249042.htmlhttp://www.tkk7.com/alvin/comments/249042.htmlhttp://www.tkk7.com/alvin/archive/2008/12/30/249042.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/249042.htmlhttp://www.tkk7.com/alvin/services/trackbacks/249042.html 鍙堜竴涓紼嬭璁?綆鍗曠殑 JSP 璁哄潧
鍔熻兘杈冪畝鍗曠殑閭g, 鐣岄潰涓婃ā浠夸簡 Discuz
JSP 鏈潵灝卞鐨勪笉琛? 鍙槸灝介噺瀹炵幇浜?MVC

婧愮爜涓嬭澆:http://www.iscripts.org/bbs/viewthread.php?tid=87


鏂囩珷鏉ユ簮:http://www.iscripts.org/bbs/viewthread.php?tid=87



]]>
JTree浣跨敤緇忛獙鎬葷粨http://www.tkk7.com/alvin/archive/2007/10/16/153137.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Mon, 15 Oct 2007 20:11:00 GMThttp://www.tkk7.com/alvin/archive/2007/10/16/153137.htmlhttp://www.tkk7.com/alvin/comments/153137.htmlhttp://www.tkk7.com/alvin/archive/2007/10/16/153137.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/153137.htmlhttp://www.tkk7.com/alvin/services/trackbacks/153137.html......

鍦ㄥ疄闄呭紑鍙戣繃紼嬩腑浼氱粡甯鎬嬌鐢↗Tree緇勪歡錛屽鉤鏃朵細閬囧埌榪欐牱鎴栭偅鏍風殑闂錛屽湪姝ゅ皢鍋跺緱涓鐐圭粡楠屽啓涓嬫潵錛屼笌澶у鍏變韓錛屽笇鏈涘澶у鏈夋墍甯姪銆?nbsp; 闃呰鍏ㄦ枃

]]>
鍒╃敤綰湡IP鏁版嵁搴?閫氳繃IP鏌ュ湴鍧[JAVA]http://www.tkk7.com/alvin/archive/2007/08/23/141139.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Thu, 23 Aug 2007 06:58:00 GMThttp://www.tkk7.com/alvin/archive/2007/08/23/141139.html
紼嬪簭浠g爜 紼嬪簭浠g爜
package alvin;
import java.io.*;

public class QQWry {
    private String DbPath = "F:\\DB\\QQWry2.Dat";    //綰湡IP鏁版嵁搴撳湴鍧
    private String Country, LocalStr;
    private long IPN;
    private int RecordCount, CountryFlag;
    private long RangE, RangB, OffSet, StartIP, EndIP, FirstStartIP, LastStartIP, EndIPOff;
    private RandomAccessFile fis;
    private byte[] buff;
    
    private long B2L(byte[] b) {
        long ret = 0;
        for (int i=0; i<b.length; i++) {
            long t = 1L;
            for (int j=0; j<i; j++) t = t * 256L;
            ret += ((b[i]<0)?256+b[i]:b[i]) * t;
        }
        return ret;
    }
    
    private long ipToInt(String ip) {
        String[] arr = ip.split("\\.");
        long ret = 0;
        for (int i=0; i<arr.length; i++) {
            long l = 1;
            for (int j=0; j<i; j++) l *= 256;
            try {
                ret += Long.parseLong(arr[arr.length-i-1]) * l;
            } catch (Exception e) {
                ret += 0;
            }
        }
        return ret;
    }
    
    public void seek(String ip) throws Exception {
        this.IPN = ipToInt(ip);
        fis = new RandomAccessFile(this.DbPath, "r");
        buff = new byte[4];
        fis.seek(0);
        fis.read(buff);
        FirstStartIP = this.B2L(buff);
        fis.read(buff);
        LastStartIP = this.B2L(buff);
        RecordCount = (int)((LastStartIP - FirstStartIP) / 7);
        if (RecordCount <= 1) {
            LocalStr = Country = "鏈煡";
            throw new Exception();
        }
        
        RangB = 0;
        RangE = RecordCount;
        long RecNo;
        
        do {
            RecNo = (RangB+RangE)/2;
            getStartIP(RecNo);
            if (IPN == StartIP) {
               RangB = RecNo;
               break;
            }
            if (IPN > StartIP)
                RangB = RecNo;
            else
                RangE = RecNo;
        } while (RangB < RangE-1);
        
        getStartIP(RangB);
        getEndIP();
        getCountry(IPN);
        
        fis.close();
    }

    private String getFlagStr(long OffSet) throws IOException {
        int flag = 0;
        do {
            fis.seek(OffSet);
            buff = new byte[1];
            fis.read(buff);
            flag = (buff[0]<0)?256+buff[0]:buff[0];
            if (flag==1 || flag==2 ) {
                buff = new byte[3];
                fis.read(buff);
                if (flag == 2) {
                    CountryFlag = 2;
                    EndIPOff = OffSet-4;
                }
                OffSet = this.B2L(buff);
            } else
                break;
        } while (true);
        
        if (OffSet < 12) {
            return "";
        } else {
            fis.seek(OffSet);
            return getStr();
        }
    }
    
    private String getStr() throws IOException {
        long l = fis.length();
        ByteArrayOutputStream byteout = new ByteArrayOutputStream();
        byte c  = fis.readByte();
        do {
            byteout.write(c);
            c = fis.readByte();
        } while (c!=0 && fis.getFilePointer() < l);
        return byteout.toString();
    }
    
    private void getCountry(long ip) throws IOException {
        if (CountryFlag == 1 || CountryFlag == 2) {
            Country = getFlagStr(EndIPOff+4);
            if (CountryFlag == 1) {
                LocalStr = getFlagStr(fis.getFilePointer());
                if (IPN >= ipToInt("255.255.255.0") && IPN <= ipToInt("255.255.255.255")) {
                    LocalStr = getFlagStr(EndIPOff + 21);
                    Country = getFlagStr(EndIPOff + 12);
                }
            } else {
                LocalStr = getFlagStr(EndIPOff+8);
            }
        } else {
            Country = getFlagStr(EndIPOff + 4);
            LocalStr = getFlagStr(fis.getFilePointer());
        }
    }
    
    private long getEndIP() throws IOException {
        fis.seek(EndIPOff);
        buff = new byte[4];
        fis.read(buff);
        EndIP = this.B2L(buff);
        buff = new byte[1];
        fis.read(buff);
        CountryFlag = (buff[0]<0)?256+buff[0]:buff[0];
        return EndIP;
    }
    
    private long getStartIP(long RecNo) throws IOException {
        OffSet = FirstStartIP + RecNo * 7;
        fis.seek(OffSet);
        buff = new byte[4];
        fis.read(buff);
        StartIP = this.B2L(buff);
        buff = new byte[3];
        fis.read(buff);
        EndIPOff = this.B2L(buff);
        return StartIP;
    }
    
    public String getLocal() { return this.LocalStr; }
    public String getCountry() { return this.Country; }
    public void setPath(String path) { this.DbPath = path; }
    
    public static void main(String[] args) throws Exception {
        QQWry w = new QQWry();
        //w.setPath(new File("QQWry2.Dat").getAbsolutePath());
        w.seek("59.39.253.251");
        System.out.println(w.getCountry() + " " + w.getLocal());
    }

}


綰湡IP搴撲笅杞藉湴鍧瑙? http://www.ialvin.cn/blog/article.asp?id=135
IP搴撳ぇ灝? 6M澶?br />
濡傛湁闂,璇峰埌http://www.ialvin.cn/blog/article.asp?id=135鎻愬嚭

]]>
甯哥敤鏁版嵁搴揓DBC榪炴帴鍐欐硶http://www.tkk7.com/alvin/archive/2007/07/18/131618.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Wed, 18 Jul 2007 15:56:00 GMThttp://www.tkk7.com/alvin/archive/2007/07/18/131618.htmlhttp://www.tkk7.com/alvin/comments/131618.htmlhttp://www.tkk7.com/alvin/archive/2007/07/18/131618.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/131618.htmlhttp://www.tkk7.com/alvin/services/trackbacks/131618.html甯哥敤鏁版嵁搴揓DBC榪炴帴鍐欐硶
涓轟簡鏂逛究澶у鏌ユ壘錛屾暣鐞嗗唴瀹瑰涓嬶細
1. MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar
Class.forName( "org.gjt.mm.mysql.Driver" );
cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );

2. PostgreSQL(http://www.de.postgresql.org)pgjdbc2.jar
Class.forName( "org.postgresql.Driver" );
cn = DriverManager.getConnection( "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd );

3. oracle(http://www.oracle.com/ip/deploy/database/oracle9i/)classes12.zip
Class.forName( "oracle.jdbc.driver.OracleDriver" );
cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd );

4. Sybase(http://jtds.sourceforge.net)jconn2.jar
Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );
cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP:2638", sUsr, sPwd );
//(Default-Username/Password: "dba"/"sql")

5. Microsoft SQLServer(http://jtds.sourceforge.net)
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );

6. Microsoft SQLServer(http://www.microsoft.com)
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master", sUsr, sPwd );

7. ODBC
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd );

8.DB2(鏂版坊鍔?
Class.forName("com.ibm.db2.jdbc.net.DB2Driver");
String url="jdbc:db2://192.9.200.108:6789/SAMPLE"
cn = DriverManager.getConnection( url, sUsr, sPwd );

9.Microsoft SQL Server series (6.5, 7.x and 2000) and Sybase 10

JDBC Name: jTDS
URL: http://jtds.sourceforge.net/
Version: 0.5.1
Download URL: http://sourceforge.net/project/showfiles.php?group_id=33291

璇硶:
Class.forName("net.sourceforge.jtds.jdbc.Driver ");
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password");
or
Connection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password");

10.Postgresql
JDBC Name: PostgreSQL JDBC
URL: http://jdbc.postgresql.org/
Version: 7.3.3 build 110
Download URL: http://jdbc.postgresql.org/download.html
璇硶:
Class.forName("org.postgresql.Driver");
Connection con=DriverManager.getConnection("jdbc:postgresql://host:port/database","user","password");

11.IBM AS400涓繪満鍦ㄧ敤鐨凧DBC璇硶
鏈夎V4R4浠ヤ笂鐗堟湰鐨凜lient Access Express
鍙互鍦–:\Program Files\IBM\Client Access\jt400\lib
鎵懼埌 driver 妗f jt400.zip錛屽茍鏇存敼鎵╁睍鍚嶆垚涓?jt400.jar
璇硶:
java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());
Class.forName("com.ibm.as400.access.AS400JDBCConnection");
con = DriverManager.getConnection("jdbc:as400://IP","user","password");

12.informix
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
Lib錛歫dbcdrv.zip<br><br>Class.forName( "com.sybase.jdbc.SybDriver" )
url="jdbc:sybase:Tds:127.0.0.1:2638/asademo";
SybConnection connection= (SybConnection)DriverManager.getConnection(url,"dba","sql");

13.SAP DB
Class.forName ("com.sap.dbtech.jdbc.DriverSapDB");
java.sql.Connection connection = java.sql.DriverManager.getConnection ( "jdbc:sapdb://" + host + "/" + database_name,user_name, password)

14.InterBase
String url = "jdbc:interbase://localhost/e:/testbed/database/employee.gdb";
Class.forName("interbase.interclient.Driver");
//Driver d = new interbase.interclient.Driver (); /* this will also work if you do not want the line above */
Connection conn = DriverManager.getConnection( url, "sysdba", "masterkey" );

15.HSqlDB
url:     http://hsqldb.sourceforge.net/
driver:  org.hsqldb.jdbcDriver
榪炴帴鏂瑰紡鏈?縐嶏紝鍒嗗埆涓猴細
con-str錛堝唴瀛橈級: jdbc:hsqldb.
con-str錛堟湰鍦幫級: jdbc:hsqldb:/path/to/the/db/dir
con-str錛坔ttp錛? jdbc:hsqldb:http://dbsrv
con-str錛坔sql錛? jdbc:hsqldb:hsql://dbsrv
鏂囩珷鏉ユ簮:http://www.pkpk.org/blog/default.asp?id=56

]]>
涓涓鑰佸笀鎵圭殑鍗婃鐨勮紼嬭璁?鍥句功綆$悊緋葷粺http://www.tkk7.com/alvin/archive/2007/07/06/128693.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Fri, 06 Jul 2007 14:45:00 GMThttp://www.tkk7.com/alvin/archive/2007/07/06/128693.htmlhttp://www.tkk7.com/alvin/comments/128693.htmlhttp://www.tkk7.com/alvin/archive/2007/07/06/128693.html#Feedback1http://www.tkk7.com/alvin/comments/commentRss/128693.htmlhttp://www.tkk7.com/alvin/services/trackbacks/128693.html 鏈潵鏄敤 VB 瀹炵幇,鍛ㄤ笁鏃?宸笉澶氭悶瀹?鑰佸笀璇寸敤 VB 澶畝鍗?br /> 鏀圭敤浜?Java 閫氬鍦?JBuider 鍜?Eclipse 涓嬪共瀹岃繖涓?娌℃兂鍒版敹璐ф椂鍗磋鑰佸笀緇欐壒浜嗕釜鍗婃. 鍞?閮侀椃!!!

涓嬭澆鏂囦歡 鐐瑰嚮涓嬭澆婧愭枃浠?/a>

]]>
淇勭綏鏂柟鍧?/title><link>http://www.tkk7.com/alvin/archive/2007/04/15/110741.html</link><dc:creator>鏋楀織鏂?/dc:creator><author>鏋楀織鏂?/author><pubDate>Sun, 15 Apr 2007 01:45:00 GMT</pubDate><guid>http://www.tkk7.com/alvin/archive/2007/04/15/110741.html</guid><wfw:comment>http://www.tkk7.com/alvin/comments/110741.html</wfw:comment><comments>http://www.tkk7.com/alvin/archive/2007/04/15/110741.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/alvin/comments/commentRss/110741.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/alvin/services/trackbacks/110741.html</trackback:ping><description><![CDATA[     鎽樿: 鏄ㄥぉ鐪嬪悓瀛﹀湪鍋氫縿緗楁柉鏂瑰潡,鑷繁蹇冪棐鐥掔殑涔熸兂鍋氫釜,璐逛簡涔濈墰浜岃檸涔嬪姏,鎵嶅啓浜嗚繖涔堜釜綆鍗曠殑 Applet 鏉?緇х畫鍔姏,浜夊彇灝藉揩瀹屽杽.  <a href='http://www.tkk7.com/alvin/archive/2007/04/15/110741.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/alvin/aggbug/110741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/alvin/" target="_blank">鏋楀織鏂?/a> 2007-04-15 09:45 <a href="http://www.tkk7.com/alvin/archive/2007/04/15/110741.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏁版嵁搴撳瓨鍌ㄥ浘鐗?[JAVA]http://www.tkk7.com/alvin/archive/2007/03/30/107368.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Thu, 29 Mar 2007 16:30:00 GMThttp://www.tkk7.com/alvin/archive/2007/03/30/107368.htmlhttp://www.tkk7.com/alvin/comments/107368.htmlhttp://www.tkk7.com/alvin/archive/2007/03/30/107368.html#Feedback5http://www.tkk7.com/alvin/comments/commentRss/107368.htmlhttp://www.tkk7.com/alvin/services/trackbacks/107368.html鍓嶄袱澶╀竴緗戝弸闂鎬庝箞鍋?鎵嶅幓鏌ヤ竴涓嬭祫鏂?璇曢獙浜嗕竴涓?nbsp; 闃呰鍏ㄦ枃

]]>
鐢?JNI 灝嗘祻瑙堝櫒宓屽叆 AWT 緇勪歡涓?/title><link>http://www.tkk7.com/alvin/archive/2007/03/06/102266.html</link><dc:creator>鏋楀織鏂?/dc:creator><author>鏋楀織鏂?/author><pubDate>Tue, 06 Mar 2007 13:45:00 GMT</pubDate><guid>http://www.tkk7.com/alvin/archive/2007/03/06/102266.html</guid><wfw:comment>http://www.tkk7.com/alvin/comments/102266.html</wfw:comment><comments>http://www.tkk7.com/alvin/archive/2007/03/06/102266.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/alvin/comments/commentRss/102266.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/alvin/services/trackbacks/102266.html</trackback:ping><description><![CDATA[     鎽樿: 鍦?SunKing's Blog 鐪嬪埌榪囦粬鍐欑殑涓涓▼搴忥紝灝辨槸灝?WebBrowser 宓屽叆 AWT 銆傜湅浜嗕箣鍚庡緢鍠滄錛屽彲鎯滀粬涓嶅叕寮 C 浠g爜銆?<br>涓轟簡璺熶粬涓鏍峰仛鍑鴻繖鏍風殑鏁堟灉錛屾悳閬嶄簡緗戜笂鐨?VC++ 璧勬枡錛岃嚜宸卞仛浜嗚繖涔堜釜灝忎笢涓滃嚭鏉ヤ簡銆傛劅瑙夎繕涓嶉敊錛屽湪鑷繁鐨勬満涓婃祴璇曡繃銆?nbsp; <a href='http://www.tkk7.com/alvin/archive/2007/03/06/102266.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/alvin/aggbug/102266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/alvin/" target="_blank">鏋楀織鏂?/a> 2007-03-06 21:45 <a href="http://www.tkk7.com/alvin/archive/2007/03/06/102266.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰(浜?http://www.tkk7.com/alvin/archive/2006/12/13/87371.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Tue, 12 Dec 2006 18:20:00 GMThttp://www.tkk7.com/alvin/archive/2006/12/13/87371.htmlhttp://www.tkk7.com/alvin/comments/87371.htmlhttp://www.tkk7.com/alvin/archive/2006/12/13/87371.html#Feedback4http://www.tkk7.com/alvin/comments/commentRss/87371.htmlhttp://www.tkk7.com/alvin/services/trackbacks/87371.html閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰(浜?

涔嬪墠,鎴戜滑瀛︿簡濡備綍鐢?Java 璋冪敤 Delphi 紼嬪簭鐨勪竴涓柟娉?br />濡傛灉鍦―elphi 紼嬪簭鍦ㄩ傚綋鏃跺欓渶瑕佽皟鐢?Java 紼嬪簭,鍙堣鎬庝箞鍋氬憿?

棣栧厛,鎴戜滑鍏堝畾涔夊涓嬬殑 Java 綾?

//------------------------------------------------------------------------------
package alvinJNI;

class HelloWorld {
聽聽聽聽聽聽聽 static {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.loadLibrary("DelphiAction");
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 String str = "浣犲ソ";
聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 public native void callPrintText(HelloWorld hw);

聽聽聽聽聽聽聽 public void printText(String arg) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println(arg);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HelloWorld hw = new HelloWorld();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 hw.callPrintText(hw);
聽聽聽聽聽聽聽 }

}
//-------------------------------------------------------------------------------

鎴戜滑鍐嶅儚涓婃涓鏍峰湪 Delphi 涓緩绔?DLL 宸ョ▼,鍐欎笅闈㈢殑浠g爜(鏈夋敞閲?:

//-------------------------------------------------------------------------------
library DelphiAction;

uses
聽 JNI;

//浠婂ぉ鐨勮繖涓▼搴忕◢寰殑澶嶆潅涓鐐?鍥犱負瑕佽皟鐢?Java 瀵硅薄鐨勬柟娉?鍦ㄨ繖閲屽彲浠ュ鍒板 JObject 鐨勬搷浣?br />procedure Java_alvinJNI_HelloWorld_callPrintText(PEnv: PJNIEnv; Obj: JObject; arg: JObject); stdcall;
var
聽 JVM: TJNIEnv;
聽 c: JClass;聽 //綾籌D
聽 fid: JFieldID;聽 //灞炴D
聽 mid: JMethodID;聽 //鏂規硶ID
聽 tmpStr: JString;
聽 javaargs : array[0..0] of JValue; //璋冪敤鏂規硶鏃剁殑鍙傛暟
begin
聽 JVM := TJNIEnv.Create(PEnv);

聽 {鎴戜滑鍏堟潵鐪嬩笅濡備綍鑾峰緱涓涓璞$殑鏌愪釜灞炴у紏
聽 {----------------------------------------}
聽 {鎴戜滑瀵?Java 瀵硅薄鐨勬搷浣滆閫夎幏鍙栬繖涓璞$殑 ClassID,鎴戜滑鍙互鐢ㄤ笅闈㈢殑鏂規硶鏉ュ彇寰?}
聽 c := JVM.GetObjectClass(arg);

聽 {鎴戜滑鍏堟潵鑾峰彇鍙傛暟 HelloWorld arg 瀵硅薄鐨?String str 榪欎釜灞炴х殑鍊?br />聽聽 榪欓噷鎴戜滑鍏堣鑾峰緱榪欎釜灞炴у湪瀹冩墍鍦ㄧ被涓殑灞炴?ID }
聽 fid := JVM.GetFieldID(c, 'str', 'Ljava/lang/String;');
聽 {涓婇潰璋冪敤鐨勮繖涓柟娉曚腑鐨勫弬鏁板垎鍒槸: 鎵灞炵被ID, 灞炴у悕, 灞炴х被鍨嬬鍚?br />聽聽 鍏充簬灞炴х被鍨嬬殑絳懼悕,灝嗗湪涓嬮潰 '璇存槑1' 緇欏嚭}

聽 {涓嬮潰,鎴戜滑灝卞彲浠ユ牴鎹?灞炴D 鏉ヨ幏鍙栧睘鎬у間簡, 榪欓噷鎴戜滑浼氬彇寰楀埌 arg.str 榪欎釜瀛楃涓瞹
聽 tmpStr := JVM.GetObjectField(arg, fid);
聽 {涓婇潰鐨勮繖涓?JVM.GetObjectField(arg, fid) 鐢ㄦ潵鑾峰彇灞炴у?br />聽聽 鍙傛暟鍒嗗埆鏄? 瑕佸彇寰楀叾灞炴х殑瀵硅薄, 瑕佸彇寰楃殑灞炴х殑灞炴D
聽聽 榪欓噷鍙栧緱鐨勬槸涓涓?Java 鐨?String 瀵硅薄,鏄?JString,鍏跺疄瀹冧篃灝辨槸 JObject 綾誨瀷鐨剗
聽 writeln('Delphi 杈撳嚭鐨? ' + JVM.UnicodeJStringToString(tmpStr));


聽 {鎴戜滑鍐嶆潵鐪嬩笅濡備綍璋冪敤涓涓?JObject 鐨勬柟娉? 榪欓噷鎴戜滑瑕佽皟鐢ㄧ殑鏄?arg.printText() 榪欎釜鏂規硶}
聽 {------------------------------------------------------------------------------------}
聽 //鎴戜滑榪樻槸瑕佺敤鍒頒笂闈㈢殑閭d釜 綾籌D: c.
聽 //榪欎竴嬈℃垜浠鍙栧緱榪欎釜鏂規硶鐨?鏂規硶ID
聽 mid := JVM.GetMethodID(c, 'printText', '(Ljava/lang/String;)V');
聽 //涓婇潰璋冪敤鐨勮繖涓柟娉曚腑鐨勫弬鏁板垎鍒槸: 鎵灞炵被ID, 鏂規硶鍚? 鏂規硶(鍙傛暟+榪斿洖鍊?綾誨瀷絳懼悕
聽 //鍏充簬鏂規硶(鍙傛暟+榪斿洖鍊?綾誨瀷鐨勭鍚?灝嗗湪涓嬮潰 '璇存槑2' 緇欏嚭

聽 //鏈変簡 鏂規硶ID 鍚庢垜浠氨鍙互鐢ㄨ繖涓狪D鏉ヨ皟鐢ㄨ繖涓柟娉曚簡,鎴戜滑榪欓噷瑕佽皟鐢ㄧ殑鏂規硶鏄? arg.printText(鍙傛暟);
聽 //鍥犱負鎴戜滑瑕佽皟鐢ㄧ殑榪欎釜鏂規硶鏈夊弬鏁? 璋冪敤 Java 鏂規硶鐨勬椂鍊欏鏋滄湁鍙傛暟,瑕佸緩绔嬪弬鏁版暟緇?榪欓噷鎴戜滑灝辨潵寤虹珛鏁扮粍
聽 javaargs[0].l := tmpStr;
聽 {榪欓噷榪欎釜 javaargs 鏄?JValue 綾誨瀷. 瀹冩湁鐐圭壒孌?瀹冪殑鐢ㄦ硶鍦ㄤ笅闈?璇存槑3 緇欏嚭}

聽 {鏈変簡 綾昏薄, 鏂規硶ID, 鍙傛暟. 涓嬮潰鎴戜滑灝卞彲浠ヨ皟鐢?arg.printText(javaargs) 榪欎釜鏂規硶浜?浣跨敤涓嬮潰榪欎釜鏂規硶灝卞彲瀹炵幇}
聽 JVM.CallObjectMethodA(arg, mid, @javaargs);

聽 JVM.Free;
end;

exports
聽聽聽聽聽聽聽 Java_alvinJNI_HelloWorld_callPrintText;
end.

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

鍒拌繖閲?鎴戜滑宸茬粡鍙互浠?Delphi 涓幏寰?Java 瀵硅薄鐨勫睘鎬т簡, 榪樺彲浠ヨ皟鐢ㄤ竴涓?Java 瀵硅薄鐨勬柟娉?鏄笉鏄緢閰峰憿?
浣犲鍒頒簡娌?


###########################璇存槑1###############################
鐜板湪,鎴戜滑榪樿鍐嶄簡瑙d竴涓幏鍙?"灞炴D" 鏃剁殑閭d釜絳懼悕
涓婇潰渚嬪瓙涓? fid := JVM.GetFieldID(c, 'str', 'Ljava/lang/String;'); 鐢ㄧ殑絳懼悕鏄? 'Ljava/lang/String;'
鍥犱負鍒氬垰瑕佽幏寰楃殑灞炴ф槸 java.lang.String 綾誨瀷鐨?鎵浠ュ畠鐨勭鍚嶆槸: 'Ljava/lang/String;'
濡傛灉,鎴戜滑瑕佽幏寰楃殑灞炴ф槸鍏跺畠綾誨瀷,鑾峰彇 灞炴D 鏃跺張瑕佹庢牱絳懼悕鍛?涓嬮潰緇欏嚭涓涓鐓ц〃

byte -- B
char --- C
double -- D
float -- F
int -- I
long -- J (娉ㄦ剰錛氭槸J涓嶆槸L)
short -- S
void -- V
boolean - Z錛堟敞鎰忥細鏄痁涓嶆槸B錛?br />class(綾誨璞$被鍨? - 'L'+瀹屾暣綾誨悕+';'聽 (鍖呰礬寰勫垎闅旂涓? '/'.聽聽 濡備笂闈緥瀛愪腑鐨?String 瀵瑰瀷, 絳懼悕涓? 'Ljava/lang/String;')

鏁扮粍 type[] -- '['+type (渚嬪 float[] 鐨勭鍚嶅氨鏄?'[float')
(濡傛灉鏄簩緇存暟緇勶紝濡俧loat[][]錛屽垯絳懼悕涓?'[[float')


############################璇存槑2###############################
鐜板湪,鎴戜滑榪樿鍐嶄簡瑙d竴涓幏鍙?"鏂規硶ID" 鏃剁殑閭d釜絳懼悕
涓婇潰渚嬪瓙涓? mid := JVM.GetMethodID(c, 'printText', '(Ljava/lang/String;)V'); 鐢ㄧ殑絳懼悕鏄? '(Ljava/lang/String;)V'
鏂規硶ID 鐨勭鍚?鍒嗕負涓ら儴鍒?br />涓閮ㄥ垎鏄墠闈㈡嫭鍙蜂腑鐨?鏄弬鏁扮被鍨嬬殑絳懼悕
鍙︿竴閮ㄥ垎鏄嫭鍙峰悗鐨?鏄繑鍥炲肩被鍨嬬殑絳懼悕
鍏朵腑鏌愪釜絳炬暟涓庤繑鍥炲肩殑綾誨瀷絳懼悕涓庤幏鍙栧睘鎬D鏃剁殑絳懼悕鏄竴鏍風殑
涓婇潰瑕佽皟鐢ㄧ殑鏂規硶鍙湁涓涓弬鏁?濡傛灉鏈夊涓弬鏁版椂鍙堟庢牱鍛?

濡? int getInt(long a, double b); 榪欐牱鐨?Java 鏂規硶瑕佽繖鏍風鍚? '(JD)I'
(娉ㄦ剰:鍙傛暟絳懼悕鏄繛緇殑,娌℃湁鍒嗛殧絎? 榪欓噷絎竴涓弬鏁?long 絳懼悕涓?J, 絎簩涓弬鏁扮鍚嶄負: D, 榪斿洖鍊肩被鍨?int 絳懼悕涓? I)
璇村埌榪欓噷,鐩鎬俊澶у閮戒細浣跨敤榪欎釜絳懼悕浜?/p>


############################璇存槑3###############################
鍦ㄨ皟鐢ㄤ竴涓?Java 鏂規硶鏃? 濡傛灉榪欎釜鏂規硶鏈夊弬鏁? 鎴戜滑灝辮浼犻掍竴涓弬鏁版暟緇勭殑鍦板潃緇?Java
鐜板湪,鎴戜滑榪樿鍐嶄簡瑙e浣曞垱寤鴻繖鏍風殑涓涓弬鏁版暟緇?br />浼犻掔粰 Java 鏂規硶鐨勫弬鏁?綾誨瀷鍧囦負 JValue. 瀹冩槸涓涓猵acked record


濡傛灉,鎴戜滑瑕佽皟鐢ㄧ殑鏂規硶 void myMethod(int a, long b, String c); 鏈?3 涓弬鏁?br />閭d箞
1.鎴戜滑鍏堣澹版槑濡備笅鏁扮粍:
var
聽 args : array[0..1] of JValue;
2.緇欐暟緇勮祴鍊?br />聽 args[0].i := 100;
聽 args[1].j := 100;
聽 args[2].l := JVM.StringToJString(pchar(UTF8Encode('闆呮灄緗戠粶 )));
3.璋冪敤
聽 JVM.CallVoidMethodA(Java瀵硅薄, 鏂規硶ID, @args);

JValue 鏄竴涓?packed record,瀹冪殑瀹氫箟濡備笅:
聽 JValue = packed record
聽 case Integer of
聽聽聽 0: (z: JBoolean);
聽聽聽 1: (b: JByte聽聽 );
聽聽聽 2: (c: JChar聽聽 );
聽聽聽 3: (s: JShort聽 );
聽聽聽 4: (i: JInt聽聽聽 );
聽聽聽 5: (j: JLong聽聽 );
聽聽聽 6: (f: JFloat聽 );
聽聽聽 7: (d: JDouble );
聽聽聽 8: (l: JObject );
聽 end;

璋冪敤鏂規硶鏃?TJNIEnv 榪樻湁:
聽聽聽 CallObjectMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JObject; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallBooleanMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JBoolean; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallByteMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JByte; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallCharMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JChar; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallShortMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JShort; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallIntMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JInt; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallLongMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JLong; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallFloatMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JFloat; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallDoubleMethodA: function(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue): JDouble; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallVoidMethodA: procedure(Env: PJNIEnv; Obj: JObject; MethodID: JMethodID; Args: PJValue); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualObjectMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JObject; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualBooleanMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JBoolean; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualByteMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JByte; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualCharMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JChar; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualShortMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JShort; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualIntMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JInt; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualLongMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JLong; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualFloatMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JFloat; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualDoubleMethodA: function(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue): JDouble; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}
聽聽聽 CallNonvirtualVoidMethodA: procedure(Env: PJNIEnv; Obj: JObject; AClass: JClass; MethodID: JMethodID; Args: PJValue); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF LINUX} cdecl; {$ENDIF}


濂戒簡,鍒拌繖閲?鐩鎬俊澶у瀵瑰仛 Delphi 鐨?JNI 宸叉湁涓瀹氱殑浜嗚В
鍏充簬 Delphi JNI 鐨勮瘽棰樺氨鍏堣鍒拌繖閲?br />濡傛灉鏈夊叴瓚?澶у鍙互鎵撳紑 jni.pas 浜嗚В鏇村



]]>
閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰(鍥?http://www.tkk7.com/alvin/archive/2006/12/11/87084.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Mon, 11 Dec 2006 15:13:00 GMThttp://www.tkk7.com/alvin/archive/2006/12/11/87084.htmlhttp://www.tkk7.com/alvin/comments/87084.htmlhttp://www.tkk7.com/alvin/archive/2006/12/11/87084.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/87084.htmlhttp://www.tkk7.com/alvin/services/trackbacks/87084.html閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰(鍥?

鍦ㄤ笂涓綃囦腑,鎴戜滑璇翠簡濡備綍鐢?Java 璋冪敤 Delphi 紼嬪簭鐨勪竴涓柟娉曞茍浼犻掔粰鍏朵竴涓弬鏁?br />鐜板湪鎴戜滑鍐嶆潵鐪嬩竴涓嬪鏋滃鏋滆璋冪敤鐨勬柟娉曟湁榪斿洖鍊?鍙堣鎬庝箞鍋?


棣栧厛,鎴戜滑鍏堝畾涔夊涓嬬殑 Java 綾?

//------------------------------------------------------------------------------
package alvinJNI;

class HelloWorld {
聽聽聽聽聽聽聽 static {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.loadLibrary("DelphiAction");
聽聽聽聽聽聽聽 }

聽聽聽聽聽聽聽 public native String printText(String arg);

聽聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HelloWorld hw = new HelloWorld();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.out.println(hw.printText("浣犲ソ"));
聽聽聽聽聽聽聽 }

}
//-------------------------------------------------------------------------------

鎴戜滑鍐嶅儚涓婃涓鏍峰湪 Delphi 涓緩绔?DLL 宸ョ▼,鍐欎笅闈㈢殑浠g爜(鏈夋敞閲?:

//-------------------------------------------------------------------------------
library DelphiAction;

uses
聽 JNI;

//浠婂ぉ,鍥犱負榪欎釜鏂規硶鏈夎繑鍥炲?鎵浠ヤ笉鍐嶆槸 procedure 榪囩▼,鎴戜滑瑕佸彉鎴?function 鍑芥暟, 榪斿洖鍊肩被鍨嬩負 JString
function Java_alvinJNI_HelloWorld_printText(PEnv: PJNIEnv; Obj: JObject; arg: JString): JString; stdcall;
var
聽 tmpStr: String;
聽 JVM: TJNIEnv;
聽 tt: Boolean;
begin
聽 JVM:= TJNIEnv.Create(PEnv);

聽 //鎴戜滑榪欓噷鍏堟妸鍙傛暟鎻愪氦榪囨潵鐨?JString 杞崲鎴?Delphi 涓殑 String 鍚庡氨鍙互浣跨敤浜?br />聽 tmpStr := '浣犳兂杈撳嚭鐨勫瓧絎︿覆鏄? "' + JVM.UnicodeJStringToString(arg) + '"銆?;

聽 //褰撳瓧絎︿覆瑕佽漿鎹㈡垚 JString 鎴戜滑闇瑕佸厛瀵瑰瓧絎︿覆榪涜 UTF8 緙栫爜鍚庡啀杞崲鎴?PChar 鍐嶈漿鎹㈡垚 JString
聽 //榪欐牱鎵嶈兘淇濊瘉榪斿洖鐨勫瓧絎︿覆鍦?JAVA 涓笉涔辯爜
聽 Result := JVM.StringToJString(pchar(UTF8Encode(tmpStr)));
聽 JVM.Free;
end;

exports
聽聽聽聽聽聽聽 Java_alvinJNI_HelloWorld_printText;
end.
//--------------------------------------------------------------------------------

鍐嶇湅鐪嬫晥鏋滃惂,鏄笉鏄垚鍔熶簡?

榪欓噷濡傛灉榪斿洖鍊肩殑綾誨瀷鏄叾瀹冪殑鍏舵湰綾誨瀷,姣斿 JLong,JInt,JFloat,JDouble,JBoolean,JShort,JByte
榪欎簺綾誨瀷鐨勬暟鎹彲浠ョ洿鎺ヤ笌 Delphi 涓殑鏁版嵁榪愮畻,瀵瑰簲 Int64,Integer,Single,Double,Boolean,SmallInt,ShortInt
榪斿洖鏃跺彲浠ョ洿鎺ョ粰 Result 璧?Delphi 涓殑鏁板? 濡?
function Java_alvinJNI_HelloWorld_getInt(PEnv: PJNIEnv; Obj: JObject): JInt; stdcall;
var
聽 tmp: Integer;
begin
聽 tmp := 10;
聽 Result := tmp;
end;

濡傛灉榪斿洖鍊肩殑綾誨瀷鏄?Object 鐨?Java 瀵硅薄,榪斿洖 JObject 綾誨瀷,瀹冪殑鐢ㄦ硶鎴戜滑鍦ㄤ互鍚庡啀鏉ュ涔?
濡傛灉榪斿洖鍊肩殑綾誨瀷鏄?Type[] 鏁扮粍,鎺ユ敹鍙傛暟鏃惰璁句負 JObject 綾誨瀷,鎬庢牱鍒涘緩榪欐牱鐨勬暟緇勫璞?鎴戣嚜宸變篃榪樹笉鐭ラ亾,浠ュ悗鐭ラ亾浜嗘垜鍐嶆潵璐翠笂
鍥犱負 Java 鏄妸鏁扮粍浣滀負瀵硅薄鐪嬪緟鐨?瀹冭浠ヤ互涓嬬殑鏂瑰紡鏉ヤ嬌鐢?

渚嬪: 鎴戜滑瑕佺粰 Delphi 鐨勬柟娉曚紶鍏ヤ竴涓?byte[] 鍨嬫暟緇?鍦ㄥ畾涔?Delphi 鏂規硶鏃跺弬鏁板0鏄庝負 bytearray: JObject

鍦ㄦ柟娉曚腑:
var
聽PByteArr: PJByte聽聽 //PJByte 鏄?JNI.pas 瀹氫箟鐨? 閲岄潰榪樻湁 PJBoolean, PJObject, PJInt 絳?.
聽JVM: TJNIEnv;
聽isCopy: Boolean;
begin
聽JVM:= TJNIEnv.Create(PEnv);
聽isCopy := false;
聽PByteArr := JVM.GetByteArrayElements(bytearray, isCopy);聽 //璋冪敤榪欎釜鏂規硶,鍙互灝嗗彇寰楀弬鏁?bytearray 鐨勫湴鍧, isCopy 鍐沖畾鏄惁澶嶅埗鏁扮粍
聽//涔嬪悗,鎴戜滑鍙互閫氳繃 PByteArr 緇撳悎 inc(PByteArr) 榪欎釜鎸囬拡鏉ユ搷浣滀紶榪囨潵鐨勬暟緇?
end;


濂戒簡,灝卞厛璇村埌榪欓噷,浠婂ぉ,浣犳槸涓嶆槸鍙堝鍒頒簡浠涔?



]]>
閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰(涓?http://www.tkk7.com/alvin/archive/2006/12/02/84962.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Fri, 01 Dec 2006 19:12:00 GMThttp://www.tkk7.com/alvin/archive/2006/12/02/84962.htmlhttp://www.tkk7.com/alvin/comments/84962.htmlhttp://www.tkk7.com/alvin/archive/2006/12/02/84962.html#Feedback3http://www.tkk7.com/alvin/comments/commentRss/84962.htmlhttp://www.tkk7.com/alvin/services/trackbacks/84962.html

鍦ㄤ笂涓綃囦腑,鎴戜滑璇翠簡濡備綍鐢?Java 璋冪敤 Delphi 紼嬪簭鐨勪竴涓柟娉曞茍浼犻掔粰鍏朵竴涓瓧絎︿覆鍙傛暟,鐜板湪鎴戜滑鍐嶆潵鐪嬩竴涓嬪鏋滀紶閫掔殑鍙傛暟鏄叾瀹冨熀鏈被鍨?鍙堣鎬庝箞鍋?


棣栧厛,鎴戜滑鍏堢湅涓涓嬪浣曚紶閫?int 鍨嬪弬鏁?瀹氫箟濡備笅鐨?Java 綾?

//----------------------------------------------------------------------------------------------------------
package alvinJNI;

class HelloWorld {
聽聽聽聽聽聽聽 static {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.loadLibrary("DelphiAction");
聽聽聽聽聽聽聽 }

聽聽聽聽聽聽聽 public native void printText(int i);

聽聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HelloWorld hw = new HelloWorld();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 hw.printText(100);
聽聽聽聽聽聽聽 }

}
//----------------------------------------------------------------------------------------------------------

鎴戜滑鍐嶅儚涓婃涓鏍峰湪 Delphi 涓緩绔?DLL 宸ョ▼,鍐欎笅闈㈢殑浠g爜(鏈夋敞閲?:

//----------------------------------------------------------------------------------------------------------
library DelphiAction;

uses
聽 JNI;

//鎴戜滑緇欒繖涓柟娉曞姞鐨勫弬鏁版槸: i: JInt
procedure Java_alvinJNI_HelloWorld_printText(PEnv: PJNIEnv; Obj: JObject; i: JInt); stdcall;
var
聽 tmpInt: Integer;

begin
聽 //鍙傛暟鎻愪氦榪囨潵鐨?int 鍨嬫暟鎹?鍦ㄨ繖閲屾槸涓涓?JInt 鏁版嵁,瀹冨叾瀹炲氨鏄竴涓?Integer 鏁版嵁,瀹冪殑浣跨敤鏇村姞鏂逛究
聽 //瀹冨彲浠ョ洿鎺ュ湴鍙備笌 Interger 綾誨瀷鏁版嵁鐨勮繍綆?鏄笉鏄緢瀹規槗.
聽 tmpInt := i + 100;
聽 tmpInt := tmpInt - 100;
聽 Writeln(tmpInt);
end;

exports
聽聽聽聽聽聽聽 Java_alvinJNI_HelloWorld_printText;
end.
//----------------------------------------------------------------------------------------------------------

鍐嶇湅鐪嬫晥鏋滃惂,鏄笉鏄垚鍔熶簡?

榪欓噷濡傛灉鏄?long 鍨嬪弬鏁?鎺ユ敹鏃惰璁句負 JLong 綾誨瀷,瀹冧篃鍙互璺熷搴旂殑鏁村瀷鏁拌繍綆?鎴戜滑甯哥敤瀹冭窡 Int64 涓璧瘋繍綆?br />濡傛灉鍙傛暟綾誨瀷鏄?float ,鎺ユ敹鍙傛暟鏃惰璁句負 JFloat 綾誨瀷,瀹冧篃鍙互璺熻窡 Single 涓璧瘋繍綆?br />濡傛灉鍙傛暟綾誨瀷鏄?double ,鎺ユ敹鍙傛暟鏃惰璁句負 JDouble 綾誨瀷,瀹冧篃鍙互璺熻窡 Delphi 涓殑 Double 鍨嬫暟鎹竴璧瘋繍綆?br />濡傛灉鍙傛暟綾誨瀷鏄?boolean ,鎺ユ敹鍙傛暟鏃惰璁句負 JBoolean 綾誨瀷,瀹冧篃鍙互璺熻窡 Delphi 涓殑甯冨皵鍨嬫暟鎹竴璧瘋繍綆?br />濡傛灉鍙傛暟綾誨瀷鏄?short ,鎺ユ敹鍙傛暟鏃惰璁句負 JShort 綾誨瀷,瀹冧篃鍙互璺熻窡 SmallInt 鍨嬫暟鎹竴璧瘋繍綆?br />濡傛灉鍙傛暟綾誨瀷鏄?byte ,鎺ユ敹鍙傛暟鏃惰璁句負 JByte 綾誨瀷,瀹冧篃鍙互璺熻窡 ShortInt 鍨嬫暟鎹竴璧瘋繍綆?br />濡傛灉鍙傛暟綾誨瀷鏄?Object 鐨?Java 瀵硅薄,鎺ユ敹鏃惰璁句負 JObject 綾誨瀷,瀹冪殑鐢ㄦ硶姣旇緝澶嶆潅(娑夊強鍒板 Java 綾誨拰瀵硅薄鐨勬搷浣?,鎴戜滑鍦ㄤ互鍚庡啀鏉ュ涔?
濡傛灉鍙傛暟綾誨瀷鏄?Type[] 鏁扮粍,鎺ユ敹鍙傛暟鏃惰璁句負 JObject 綾誨瀷,鍥犱負 Java 鏄妸鏁扮粍浣滀負瀵硅薄鐪嬪緟鐨?瀹冭浠ヤ互涓嬬殑鏂瑰紡鏉ヤ嬌鐢?

渚嬪: 鎴戜滑瑕佺粰 Delphi 鐨勬柟娉曚紶鍏ヤ竴涓?byte[] 鍨嬫暟緇?鍦ㄥ畾涔?Delphi 鏂規硶鏃跺弬鏁板0鏄庝負 bytearray: JObject

鍦ㄦ柟娉曚腑:
var
聽PByteArr: PJByte聽聽 //PJByte 鏄?JNI.pas 瀹氫箟鐨? 閲岄潰榪樻湁 PJBoolean, PJObject, PJInt 絳?.
聽JVM: TJNIEnv;
聽isCopy: Boolean;
begin
聽JVM:= TJNIEnv.Create(PEnv);
聽isCopy := false;
聽PByteArr := JVM.GetByteArrayElements(bytearray, isCopy);聽 //璋冪敤榪欎釜鏂規硶,鍙互灝嗗彇寰楀弬鏁?bytearray 鐨勫湴鍧, isCopy 鍐沖畾鏄惁澶嶅埗鏁扮粍
聽//涔嬪悗,鎴戜滑鍙互閫氳繃 PByteArr 緇撳悎 inc(PByteArr) 榪欎釜鎸囬拡鏉ユ搷浣滀紶榪囨潵鐨勬暟緇?
end;


濂戒簡,灝卞厛璇村埌榪欓噷,浠婂ぉ,浣犳槸涓嶆槸鍙堝鍒頒簡浠涔?



]]>
閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰(浜?http://www.tkk7.com/alvin/archive/2006/12/01/84947.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Fri, 01 Dec 2006 13:30:00 GMThttp://www.tkk7.com/alvin/archive/2006/12/01/84947.htmlhttp://www.tkk7.com/alvin/comments/84947.htmlhttp://www.tkk7.com/alvin/archive/2006/12/01/84947.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/84947.htmlhttp://www.tkk7.com/alvin/services/trackbacks/84947.html鐜板湪闅懼緱鏉ョ湅涓涓嬭嚜宸辯殑鍗氬,浠婂ぉ濂戒笉瀹規槗鎵句簡涓唬鐞?欏轟究鍐嶇戶緇箣鍓嶇殑璇濋,灝辨槸 JAVA 涓?Delphi 鐨勪氦浜掍簡.

鍦ㄤ笂涓綃囦腑,鎴戜滑璇翠簡濡備綍鐢?Java 璋冪敤 Delphi 紼嬪簭鐨勪竴涓柟娉?浠婂ぉ鎴戜滑鍐嶆繁鍏ヤ竴鐐?灝辨槸鎬庢牱鎻愪氦鍙傛暟涓?Delphi 鐨勬柟娉?浠ュ姩鎬佺殑鎺у埗 Delphi 鐨勬柟娉?
涓嬮潰,鎴戜滑鍒囧叆姝i.

棣栧厛,鎴戜滑瀹氫箟濡備笅鐨?Java 綾?

//----------------------------------------------------------------------------------------------------------
package alvinJNI;

class HelloWorld {
聽聽聽聽聽聽聽 static {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 System.loadLibrary("DelphiAction");
聽聽聽聽聽聽聽 }

聽聽聽聽聽聽聽 public native void printText(String str);

聽聽聽聽聽聽聽 public static void main(String[] args) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HelloWorld hw = new HelloWorld();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 hw.printText("鎮ㄥソ錛佺湅鍒版晥鏋滀簡鍚с?);
聽聽聽聽聽聽聽 }

}
//----------------------------------------------------------------------------------------------------------

鎴戜滑鍐嶅儚涓婃涓鏍峰湪 Delphi 涓緩绔?DLL 宸ョ▼,鍐欎笅闈㈢殑浠g爜(鏈夋敞閲?:

//----------------------------------------------------------------------------------------------------------
library DelphiAction;

uses
聽 JNI;

//榪欎竴嬈℃垜浠鍐欑殑榪欎釜鏂規硶鍥犱負瑕佹帴鏀朵竴涓?Java 浼犺繃鏉ョ殑鍙傛暟,鎵浠ユ垜浠潵璇翠竴涓嬭繖涓弬鏁板垪琛ㄧ殑闂
//鍙傛暟鍒楄〃涓殑絎竴涓弬鏁?PEnv 綾誨瀷涓?PJNIEnv, 瀹冩槸 JNI.pas涓畾涔夌殑綾誨瀷,鎴戜滑濂藉宸ヤ綔瑕侀氳繃瀹冩潵瀹炵幇,鍙互鎶婂畠鐪嬫垚鏄竴涓府浣犵殑紼嬪簭涓?Java 娌熼氱殑妗ユ.
//鍙傛暟鍒楄〃涓殑絎竴涓弬鏁?obj 綾誨瀷涓?JObject.鍓嶉潰榪欎袱涓弬鏁版槸鍥哄畾鐨?榪欑浜屼釜鍙傛暟鏆傛椂鎴戜滑榪樹笉浼氱敤鍒?
//浠婂ぉ,鎴戜滑榪樿緇欒繖涓柟娉曞鍔犱竴涓弬鏁?鐢ㄦ潵鎺ュ彈 Java 浼犺繃鏉ョ殑鍙傛暟. str: JString

procedure Java_alvinJNI_HelloWorld_printText(PEnv: PJNIEnv; Obj: JObject; str: JString); stdcall;
//榪欏洖鎴戜滑闇瑕佺敤鍒頒竴涓?TJNIEnv 瀵硅薄,鎴戜滑鏉ュ0鏄?br />var
聽 JVM: TJNIEnv;
聽 tmpStr: String;

begin
聽 //瀹炰緥鍖?JVM, 榪欎釜瀵硅薄鍙互鐪嬫垚鏄?Java 鐨勮櫄鎷熸満.(鑷繁鐨勭悊瑙?
聽 JVM := TJNIEnv.Create(PEnv);

聽 //鍙傛暟鎻愪氦榪囨潵鐨勫瓧絎︿覆,瀹為檯涓婃槸涓涓?JString 瀵硅薄,鎴戜滑鍦ㄨ繖閲岃鐢?JVM 鏉ヨ漿鍖栧畠.
聽 //鎴戜滑璋冪敤 JVM 鐨?UnicodeJStringToString 鍑芥暟灝卞彲浠ュ疄鐜?JString 鍒?String 鐨勮漿鍖栦簡.
聽 tmpStr := JVM.UnicodeJStringToString(str);

聽 Writeln(tmpStr);

聽 //鎴戜滑浣跨敤瀹?JVM 鍚?瑕佸皢鍏墮噴鏀?
聽 JVM.Free;
end;

exports
聽聽聽聽聽聽聽 Java_alvinJNI_HelloWorld_printText; //涓哄嚱鏁板仛寮曞嚭澹版槑,榪欐牱鎵嶈兘鐪熸鐨勮璋冪敤鍒?br />end.
//----------------------------------------------------------------------------------------------------------

鎴戜滑鐜板湪灝卞彲浠ョ敓鎴?DelphiAction.dll 灝嗗叾鏀懼湪 Java 宸ョ▼鐩綍涓? 鍐嶆墽琛?alvinJNI.HelloWorld 鐪嬬湅鏁堟灉浜?

濂戒簡,鎴戜滑浠婂ぉ涓昏灝辨槸瀹炵幇浜嗕竴涓?濡備綍鍦?Java 璋冪敤 Delphi 鐨勬柟娉曟椂,緇欏叾鎻愪氦涓涓弬鏁?
鏄笉鏄緢鐖?

浠婂ぉ灝卞厛璇村埌榪欓噷.鎺ヤ笅鏉?鎴戜細灝藉揩鐨勫啀璐翠笂涓浜涙枃绔?/p>

]]>
閫氳繃 JNI 璁?JAVA 涓?Delphi 紼嬪簭浜や簰http://www.tkk7.com/alvin/archive/2006/11/14/81035.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Mon, 13 Nov 2006 21:10:00 GMThttp://www.tkk7.com/alvin/archive/2006/11/14/81035.htmlhttp://www.tkk7.com/alvin/comments/81035.htmlhttp://www.tkk7.com/alvin/archive/2006/11/14/81035.html#Feedback0http://www.tkk7.com/alvin/comments/commentRss/81035.htmlhttp://www.tkk7.com/alvin/services/trackbacks/81035.html  闃呰鍏ㄦ枃

]]>
瑙e喅 JAVA 鍐欏叆鏂囨湰鏂囦歡鏃朵腑鏂囦貢鐮?/title><link>http://www.tkk7.com/alvin/archive/2006/11/05/79235.html</link><dc:creator>鏋楀織鏂?/dc:creator><author>鏋楀織鏂?/author><pubDate>Sun, 05 Nov 2006 10:22:00 GMT</pubDate><guid>http://www.tkk7.com/alvin/archive/2006/11/05/79235.html</guid><wfw:comment>http://www.tkk7.com/alvin/comments/79235.html</wfw:comment><comments>http://www.tkk7.com/alvin/archive/2006/11/05/79235.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.tkk7.com/alvin/comments/commentRss/79235.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/alvin/services/trackbacks/79235.html</trackback:ping><description><![CDATA[     鎽樿: 涔嬪墠鍐欒繃涓涓柟娉曞彲浠ヨВ鍐充粠澶栭儴璇誨叆鏂囨湰鏃朵腑鏂囦笉浼氫貢鐮侊紝鍙槸浠庣▼搴忎腑鐨勫瓧絎︿覆瑕佸啓鍥炴枃鏈枃浠舵椂鍙堝嚭鐜頒簡涓枃瀛楃涔辯爜錛屽師鍥犳槸JAVA榛樿浣跨敤Unicode緙栫爜鐨勫瓧絎︼紝鑰屾垜浠嬌鐢ㄧ殑windows緋葷粺鏂囨湰鏂囦歡浣跨敤鐨勬槸GBK緙栫爜錛岃瑙e喅榪欎釜闂錛屽氨寰椾粠緙栫爜涓婂叆鎵嬨備笅闈㈣繖涓柟娉曞氨鍙互灝嗗瓧絎︿覆浠BK緙栫爜鍐欏叆鏂囨湰鏂囦歡錛岃繖鏍峰氨鍙互瑙e喅鍐欏叆涓枃瀛楃涔辯爜鐨勯棶棰樹簡銆?<br>  <a href='http://www.tkk7.com/alvin/archive/2006/11/05/79235.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/alvin/aggbug/79235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/alvin/" target="_blank">鏋楀織鏂?/a> 2006-11-05 18:22 <a href="http://www.tkk7.com/alvin/archive/2006/11/05/79235.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瑙e喅 JAVA 璇誨彇鏂囨湰涓枃涔辯爜http://www.tkk7.com/alvin/archive/2006/11/04/79087.html鏋楀織鏂?/dc:creator>鏋楀織鏂?/author>Sat, 04 Nov 2006 09:24:00 GMThttp://www.tkk7.com/alvin/archive/2006/11/04/79087.htmlhttp://www.tkk7.com/alvin/comments/79087.htmlhttp://www.tkk7.com/alvin/archive/2006/11/04/79087.html#Feedback2http://www.tkk7.com/alvin/comments/commentRss/79087.htmlhttp://www.tkk7.com/alvin/services/trackbacks/79087.html鍋剁劧鐨勪竴嬈″湪涓鏈弬鑰冧功鐪嬪埌 鐢╞yte鏁扮粍瀛樺偍璇誨彇緇撴灉,鍐嶇敤byte鏁扮粍鏋勫緩瀛楃涓?鍙В鍐充貢鐮侀棶棰?璇曚簡涓涓?鏋滅劧瑙佹晥浜?浜庢槸鍐欎簡涓嬮潰涓涓畝鍗曠殑綾?浠ュ鐢?  闃呰鍏ㄦ枃

]]>
主站蜘蛛池模板: 亚洲熟妇AV一区二区三区浪潮 | 亚洲精品无码中文久久字幕| 国产一区二区免费在线| 国产猛男猛女超爽免费视频| 亚洲国产精品久久久久秋霞影院| 成人午夜大片免费7777| 国产在线精品一区免费香蕉| 亚洲宅男天堂a在线| 久久久久国产亚洲AV麻豆| 97视频免费在线| 久久一区二区免费播放| 亚洲熟妇无码AV| 亚洲视频精品在线观看| 亚洲欧洲中文日韩久久AV乱码| 久久精品国产免费观看三人同眠| 边摸边吃奶边做爽免费视频99| 亚洲第一视频网站| 亚洲国产成人精品无码久久久久久综合 | 亚洲国产精品国自产拍电影| 又黄又爽一线毛片免费观看| 成人黄色免费网站| 外国成人网在线观看免费视频| 午夜在线免费视频 | 亚洲综合色区在线观看| 在线免费观看一区二区三区| 99re在线这里只有精品免费| 亚美影视免费在线观看 | 亚洲乱码一区二区三区国产精品| 亚洲精品无码乱码成人| 亚洲人成人网站在线观看| 国产精品久久免费视频| 四虎永久在线精品免费网址| 三年片在线观看免费观看高清电影 | 免费视频精品一区二区| 国产精品亚洲综合天堂夜夜| 亚洲国产成人无码AV在线| 亚洲国产成人久久一区二区三区| 7777久久亚洲中文字幕| 亚洲欧洲无码AV不卡在线| 亚洲精品无码成人片久久不卡| 亚洲日产乱码一二三区别|