Imam .cps skriptu koji aplicira .cmk makro (bušenje rupe) na određenu dasku.
Skripta ima izbornik koji bira stranu daske 2,3,4 ili 5.
Ovisno o tome što se izabere pokreće se određeni .cmk. (4 makroa koji se samo razlikuju u connect vrijednosti )
Ali to je sve nepotrebno ako postoji način da .cps promjeni vrijednost connect= unutar .cmk na željenu.
Da li se to može učiniti?
Ne postoji naredba koja će promijeniti sadržaj makroa prije nego što ga aplicira (niti poslije).
To znači da se ne može promijeniti Connect dio makroa prije nego što ga se postavi na dasku.
Ipak, kao što ste vidjeli, Links skripte to nekako rade. One prolaze kroz sve varijable makroa i onda ih primijenjuju na makro. Kako?
Ove skripte prvo čitaju početni makro koji je prije spremljen i parsiraju ga, tj čitaju ga kao tekstualnu datoteku i pronalaze što se nalazi u sekciji [Varijable].
Zatim te podatke prikažu na ekranu u dozvoljavaju korisniku da ih promijeni.
Kad se klikne “Postavi spoj”, skripta izmijenjene podatke piše u natrag makro koji je i dalje tekstualna datoteka na disku.
Na kraju se izvršava “e.MakeSpoj” koji poziva izmijenjeni makro.
Slobodno pogledajte skripte u Links sekciji da vidite kako se to radi.
Evo, ovaj kod radi append na postojeću datoteku. Uviđate logiku kojom ću ići? “Glava” bušenja je ista, pa append dijela koji se odnosi na connect i onda append “repa” bušenja.
program ABC;
procedure Append2File;
var
Str: TStringList;
OldStr: TStringList;
begin
Str := TStringList.Create;
OldStr := TStringList.Create;
try
OldStr.LoadFromFile(‘c:tempTest.txt’);
Str.Add(‘Dodani tekst’);
OldStr.AddStrings(Str);
OldStr.SaveToFile(‘c:tempTest.txt’);
finally
Str.Free;
OldStr.Free;
end;
end;
begin
Append2File;
end.
A možete i cijeli makro učitati u tStringList, promijeniti redove koje trebate i spremiti sve natrag.
Za razdvajanje lijeve i dasne strane stringa koji sadrži znak “=” možete koristiti interne funkcije
rcLeftSide(tt:string):string
rcRightSide(tt:string):string
da bi ih uključili u svoj kod koristite
{$I ..includercStrings.cps} iznad deklaracije varijabli
Za spajanje u jedan red se koristi zbrajanje.
Na primjer: RedString:=LijeviString+’=’+DesniString
Dosta složen postupak unutar Linksa. Ovaj jednostavan kod zapisuje podatke u vanjsku datoteku. Razmišljam kako bi napravio kod koji bi radio append (ili nekoliko njih) na postojeći .cmk koji bi se kasnije aplicirao na dasku. Međutim append mi baš ne radi, dobivam privilegd instruction grešku.
program ABC;
procedure String2File;
var s: string;
FilePath: string;
FileStream: TFileStream;
begin
s := ‘Connect=23’+ #13#10 + ‘AutoOn=1’;
FilePath := ‘c:tempTest.txt’;
FileStream := TFileStream.Create(FilePath, fmCreate);
try FileStream.WriteBuffer(s, Length(s)*2);
finally FileStream.Free;
end;
end;
begin
String2File;
end.