Shared Library'ler & Diğer Program'ları ÇalıştırmaShared Libraries & Running Other Programs
Bu bölüm, dll/so dosyalarındaki method'ları çağırmak için library olarak kullanmayı ve belirli bir action gerçekleştirmek veya belirli file format'larını açmak için başka program'ları çağırmayı tanıtmayı amaçlar.This sections aims to introduce using dll/so files as library to call methods in dll/so and invoking other programs to perform a specific action or open specific file formats.
Shared Library'lere GirişIntroduction to Shared Libraries
TROIA'da Shared Library KullanmaUsing Shared Libraries in TROIA
iasNativeCall.dll / iasNativeCall.soiasNativeCall.dll / iasNativeCall.so
LOADNATIVE KomutuLOADNATIVE Command
LOADNATIVE {libname} , {signature} TO {targetsymbol} WITH {parameters};
OBJECT:
STRING STRINGVAR1,
STRING STRINGVAR2;
STRINGVAR1 = 'int abs(int)';
LOADNATIVE '!msvcrt.dll',STRINGVAR1 TO STRINGVAR2 WITH '-4';
OBJECT:
STRING STRINGVAR1,
STRING STRINGVAR2;
STRINGVAR1 = 'int abs(int)';
LOADNATIVE 'msvcrt.dll',STRINGVAR1 TO STRINGVAR2 WITH '-4';Dosyaları Default App ile AçmaOpening Files with Default App
Kullanıcılar belirli file extension'ları için farklı default application'lar seçer, bu yüzden client tarafında bir dosya açan TROIA code'u yazarken doğru bir application belirtmek mümkün değildir. Örneğin; bir .htm dosyası göstermek için chrome/internet explorer çalıştırmak, cross-platform bir application için doğru bir yaklaşım değildir. Default browser (veya başka bir tür application), client'ın operating system'ine ve kullanıcının seçimine bağlıdır.Users selects different default applications for specific file extensions, so it is not possible to indicate a correct application while writing TROIA code that opens a file in client side. For example; to show a .htm file, running chrome/internet expolorer is not a correct approach for a cross-platform application. The default browser (or another kind of application) depends on operating system of the client and user’s choice.
Cross-platform bir çözüm oluşturmayı azaltmak için, TROIA'nın verilen file extension için default application'ı çalıştıran bir RUNFILE komutu vardır. Bu komutu kullanarak TROIA programcıları, verilen dosya için hangi application veya programın default olduğunu tamamen göz ardı eder, tüm operation'lar interpreter katmanında gerçekleştirilir.To reduce creating a cross-platform solution, TROIA has a RUNFILE command that fires default application for given file extension. Using this command TROIA programmers totally ignore which application or program is default for given file, all operations are performed in interpreter layer.
RUNFILE {filepathonclient};RUNFILE komutu yalnızca client tarafı path'ler için çalışır, başka bir deyişle application server'da default application'ı çalıştırmak mümkün değildir. İşte bir .htm dosyası oluşturup default browser ile çalıştıran bir örnek.RUNFILE command works only for client side paths, in other words it is not possible to fire default application in application server. Here is an example that creates a .htm file and runs it with default browser.
OBJECT:
STRING STRPATH;
STRPATH = '*C:\TMP\runfile.htm';
OPEN FILE STRPATH FORNEW;
PUT '<b>RUNFILE Command</b>';
CLOSE FILE;
RUNFILE STRPATH;Aynı örnek, bir server tarafı path için.Same example, for a server side path.
OBJECT:
STRING STRPATH;
STRPATH = '.\runfile.htm';
OPEN FILE STRPATH FORNEW;
PUT '<b>RUNFILE Command</b>';
CLOSE FILE;
RUNFILE STRPATH;
DELETEFILE STRPATH;Diğer Program'ları ÇağırmaInvoking Other Programs
RUNPROGRAM {executable} [params] [WITH WAIT [INTO {targetsymbol}]];RUNPROGRAM KomutuRUNPROGRAM Command
OBJECT:
STRING STRINGVAR3,
STRING COMMAND;
COMMAND = '*ipconfig -all';
RUNPROGRAM COMMAND WITH WAIT INTO STRINGVAR3;
OBJECT:
STRING STRINGVAR3,
STRING COMMAND;
COMMAND = '*java -jar C:\TMP\OutPrinter.jar p1 p2 p3 p4';
RUNPROGRAM COMMAND WITH WAIT INTO STRINGVAR3;
public static void main(String[] args) {
System.out.println("Out Printer");
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
System.out.println(" Arg " + (i + 1) + ": " + args[i]);
}
} else {
System.out.println(" No Input Parameter.");
}
}Alıştırma 1: Domain müsaitliğini kontrol etmeExercise 1: Checking domain availability
OBJECT:
STRING STRINGVAR3,
STRING COMMAND,
STRING TMPRESULT;
STRINGVAR1 = 'g';
INTEGERVAR1 = 0;
STRINGVAR3 = '';
WHILE INTEGERVAR1 < 20
BEGIN
INTEGERVAR1 = INTEGERVAR1 + 1;
STRINGVAR1 = STRINGVAR1 + 'g';
STRINGVAR2 = 'www.'+STRINGVAR1+'le.com';
COMMAND = '*C:\TMP\whois.exe ' + STRINGVAR2;
SYNCHRONIZE;
RUNPROGRAM COMMAND WITH WAIT INTO TMPRESULT;
IF STRPOS(TMPRESULT, 'No whois information found') > 0 THEN
STRINGVAR3 = STRINGVAR3 + STRINGVAR2 + ' : available.';
ELSE
STRINGVAR3 = STRINGVAR3 + STRINGVAR2 + ' : not available.';
ENDIF;
STRINGVAR3 = STRINGVAR3 + TOCHAR(10);
ENDWHILE;