UNIT Suche_Driver;

INTERFACE

FUNCTION Get_Best_Driver(VAR Driver,Mode : Integer; VAR Name : STRING) : Boolean;
      {true wenn andere Treiber als VGA anwesend}
IMPLEMENTATION

USES Graph,Dos;

FUNCTION Get_Best_Driver(VAR Driver,Mode : Integer; VAR Name : STRING) : Boolean;

VAR Info : SearchRec;
      Max  : Integer;
      Path : STRING;

PROCEDURE Suche_Driver;

VAR Mydriver,Mymode,Lomode,I : Integer;
      Dir,Ext,Tempname : STRING;

CONST Bekannt : ARRAY [1..6] OF STRING[8] = ('ATT','EGAVGA','CGA','PC3270','IBM8514','HERC');

BEGIN
  FSplit(Info.Name,Dir,Tempname,Ext);
  FOR I:=1 TO 6 DO IF Tempname=Bekannt[I] THEN Exit;
  Mydriver:=InstallUserDriver(Tempname,NIL);
  Mymode:=0;
  InitGraph(Mydriver,Mymode,Path);
  IF GraphResult<>grOk THEN
  BEGIN
    CloseGraph;
    Exit;
  END;
  GetModeRange(Mydriver,Lomode,Mymode);
  IF Mymode<=0 THEN Mymode:=10;
  FOR I:=0 TO Mymode DO
  BEGIN
    SetGraphMode(I);
    IF GraphResult<>grOk THEN
    BEGIN
      CloseGraph;
      Exit;
    END;
    IF GetMaxX> Max THEN
    BEGIN
      Driver:=Mydriver;
      Mode:=Mymode;
      Name:=Tempname;
      Max:=GetMaxX;
    END;
  END;
  CloseGraph;
END;

BEGIN
  Max:=0;
  Path:=Name;
  Name:='EGAVGA';
  Driver:=VGA;
  Mode:=VGAHi; {Initzialsierung}
  Get_Best_Driver:=False;
  IF Path='' THEN Path:='.';
  IF Path[Length(Path)]<>'\' THEN Path:=Path+'\';
  FindFirst(Path+'*.bgi',AnyFile,Info);
  WHILE DosError=0 DO
  BEGIN
    Get_Best_Driver:=True;
    Suche_Driver;
    FindNext(Info);
  END;
END;

BEGIN
END.
