Program ChangeIO; { ====================================================================== ChangeIO.p , (C)16|06|1992 by "Diesel" Bernd Künnen Zur Benutzung im CLI bzw. in Scripts. Zweck des Ganzen ist es, das 640*200-CON-Fenster, das durch das Runtime-System des PCQ- Compilers bei einem WB-Start geöffnet wird, auf eine angenehmere Größe zu bringen. Und das geht so : ChangeIO Myproggy con:10/0/400/50/ Der neue IO-Kanal darf dabei max. 16 Buchstaben haben. Angewendet werden kann das Ganze sowohl auf Objectcodes als auch auf fertige Programme. Allens chlor ? Diesel  ======================================================================} {$I "include:libraries/dos.i"} {$I "include:utils/stringlib.i"} {$I "include:utils/parameters.i"} Const PCQ_IO : String = "CON:0/0/640/200/"; Max = 1024; Type Memo = Array[0..Max-1] Of Byte; MemoPtr = ^memo; VAR i : Short; x, pcq, old, anz, anz2 : Integer; myMem : MemoPtr; buf : Address; pFile, newIO : String; MyHandle : FileHandle; Procedure CleanExit(why: String; rt : Integer); Begin IF Myhandle<>NIL then DosClose(MyHandle); If why<>NIL then begin writeln(why); writeln("\nUsage : ChangeIO Filename IOstring(max. 16 chars)\nE.g. changeIO NewProg raw:0/0/99/40/Hi\n"); Delay(100); End; Exit(rt); End; BEGIN { -- ersma` Begrüßung, logo -- } writeln("ChangeIO 1.0, (C)1992 by Diesel.\n"); { --jetzt die Arbeitsbuffers holen -- } pFile := AllocString(100); newIO := AllocString(40); New(myMem); pcq:=strlen(PCQ_IO); { -- das 1. Arg. holen -- } GetParam(1,pFile); IF StrLen(pFile)=0 THEN Cleanexit("No parameters",5); { -- das 2. Arg holen -- } GetParam(2,newIO); IF StrLen(newIO)=0 THEN Cleanexit("No IO-String",5); IF strlen(newIO) > pcq then CleanExit("New IO-String 2 long!",5); { -- Jetzt das File öffnen -- } MyHandle:=DOSOpen(pFile,Mode_OldFile); IF MyHandle=NIL THEN CleanExit("Could not open file",10); { -- Suche den alten PCQ-IO-String -- } Repeat anz:=DOSRead(MyHandle,myMem,Max); IF anz>pcq Then Begin i:=-1; Repeat i:=i+1; buf:=Adr(myMem^[i]); x:=strcmp(PCQ_IO,buf); until (x=0) or (i=anz-pcq); End; Until (anz0 then cleanexit("Could not find old IO-String",5); { -- Ersetze den alten durch den neuen IO-String -- } strcpy(buf,newIO); { -- geänderten Inhalt in die Datei schreiben -- } old:=Seek(MyHandle,-1*anz,Offset_Current); anz2:=DosWrite(MyHandle,myMem,anz); If anz2<>anz then CleanExit("Error on changing file",10); { -- Bye bye GTI -- } Cleanexit(NIL,0); END.