Random number assignment without duplicates

Random number assignment without duplicates

type

  TDyArray = array of Integer;

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

function Out_Random( cno : integer ) : TDyArray;

var

  r1, r2, itemp, i : integer;

  dataArr : TDyArray;

begin

  SetLength( dataArr, cno );

  for i := 0 to cno-1 do   // 동적 배열에 데이터를 할당

    dataArr[i] := i + 1;

  for I := 1 to cno div 2  do  // 전체갯수 반번 만큼 랜던 교환

  begin

    r1 := Random( cno );

    r2 := Random( cno );

    itemp := dataArr[ r1 ];

    dataArr[ r1 ] := dataArr[ r2 ];

    dataArr[ r2 ] := itemp;

  end;

  result := dataArr;

end;

// for Test ***************************************************************************

procedure TMForm.Button2Click(Sender: TObject);

var

  aaa : TDyArray;

  i  : integer;

begin

  aaa := Out_Random( 10 );


  Memo1.Lines.Clear;

  for i := 0 to High( aaa ) do

    Memo1.Lines.Add( aaa[ i ].ToString );

end;




How to view Android package apps and call SMS or phone apps in Delphi FMX

 


unit Gradation;

unit MUnit1;

interface

uses

  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,

  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls,

  Androidapi.JNI.GraphicsContentViewText,

  Androidapi.JNI.JavaTypes,

  FMX.Helpers.Android,

  AndroidApi.Helpers,

  Androidapi.JNIBridge,

  Androidapi.JNI.Net;


type

  TForm1 = class(TForm)

   Button1: TButton;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);

var

  PM: JPackageManager;

  mainIntent: JIntent;

  LaunchIntent: JIntent;

  pkgAppsList: JList;

  ri: JResolveInfo;

  iter: JIterator;

  midlist : TStringList;

begin

  PM := SharedActivityContext.getPackageManager;

  mainIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_MAIN, nil);

  mainIntent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER);

  pkgAppsList := PM.queryIntentActivities(mainIntent, 0);

  midlist := TStringList.Create;

  iter := pkgAppsList.iterator;

  while iter.hasNext do

  begin

    ri := TJResolveInfo.Wrap((iter.next as ILocalObject).GetObjectID);

    mIdList.Add(JStringToString(ri.activityInfo.applicationInfo.packageName));

  end;

  LaunchIntent := PM.getLaunchIntentForPackage(StringToJString(mIdList[2]));

// 특정 앱  실행 방법.

// LaunchIntent := PM.getLaunchIntentForPackage(StringToJString( 'com.samsung.android.messaging') );

// SharedActivityContext.startActivity( LaunchIntent )

  showmessage(  mIdList.Text );

end;



procedure TForm1.Button2Click(Sender: TObject);

var

  PM: JPackageManager;

  Intent: JIntent; //Declares the intent object

begin

  PM := SharedActivityContext.getPackageManager;

  Intent := TJIntent.Create;

  Intent.setData( TJnet_Uri.JavaClass.parse(StringToJString('smsto:01012345678')));   // sms

// Intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('tel:' + ANumber)));      // call

  Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringtoJString( 'Hellow' ));

  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); //Defines the Action.

  if SharedActivityContext.getPackageManager.queryIntentActivities(Intent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then //Checks if there is at least one application capable of receiving the intent.

     SharedActivityContext.startActivity(Intent) //Calls startActivity() to send the intent to the system.

  else

    ShowMessage('Receiver not found');

end;


end.