Toon posts:

Pascal begrijpen - wat doet dit programma? *

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
kent iemand een tooltje om een pascal file naar een batch file te converten? ik zit hier namelijk met een behoorlijk oud houtje-touwtje pascal scriptje zonder comments en zonder dat iemand nog weet hoe het precies werkt. ik moet hiervoor een ander scriptje maken maar dan is het wel handig om te weten hoe het oude script in elkaar zit (en wss kan ik ook wel een deel ervan hergebruiken) maar aangezien ik niets van pascal ken kom ik er zo niet achter :(

code:

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Program Parameters(Input,Output);

{$M $4000,0,0 }   { 16K stack, no heap }
uses Dos;

var
    i: integer;
    f: text;
    FInput : String[200];
    FCommand : String[160];
    InputParams : String[160];

begin
     FInput := '';
     FCommand := '';
     InputParams := '"';

     Assign(f, 'c:\snmpc\apiexec\mobile.ini');
     Reset(f);

     for i := 1 to ParamCount do
         Inputparams := Concat(InputParams, Paramstr(i), ' ');

     InputParams := Concat(InputParams, '"');

     If not EOF(f) then Readln(f, FCommand);

     while not EOF(f) do
           begin
                readln(F, FInput);
                Exec(FCommand, Concat(Copy(FInput,1,Length(Finput)), ' ', InputParams));
                if DosError <> 0 then{ Error? }
                      WriteLn('Dos error #', DosError);
           end;

     Close(f);
end.


ps. ik kan alleen overweg met batch dus een andere taal gebruiken kan niet

[ Voor 6% gewijzigd door moto-moi op 29-11-2005 19:54 . Reden: even je code wat leesbaarder gemaakt door de juiste highlighter te gebruiken ;) ]


  • Scyth
  • Registratie: Juli 2001
  • Laatst online: 16-03-2024

Scyth

Fat finger, three beer

batch heeft lang niet alle functies van een volwaardige programmeertaal.. een ->.bat converter kan je imho vergeten. Wat jij nu ongeveer vraagt is hetzelfde als vragen of er een programma is die een olieverfschilderij convert naar een krantenartikel.

Misschien een idee om een crashcourse pascal te volgen :)

Dell Studio XPS 16
Project: BavBierSub 1.0 BavBierSub 2.0


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20-04 07:00
Is dit alles? Wat dit programmaatje globaal doet is het inlezen van een .ini-bestand, en van daaruit een uit te voeren commando halen. Dit commando wordt uitgevoerd met de argumenten die meegegeven zijn bij de aanroep.

Of dit naar een .bat-programma kan worden herschreven weet ik niet (voor mijn gevoel kan je met .bat helemaal 'niets', maar hierover krijg ik vast ruzie met anderen die het beter weten :)), maar het programma is dermate simpel dat je het vast wel met wat uitzoekwerk in een 'echte' programmeertaal kan schrijven. Kijk eens naar Delphi, daar kan je het vermoedelijk zo in kopiëren :).

Een Pascal->Batch converter zal sowieso niet bestaan. Heel klein beetje in Delphi/Pascal of een andere programmeertaal verdiepen kan geen kwaad ;).

Verwijderd

Topicstarter
nuja, met een paar how-to-guides enzo zal ik het evt. wel ergens in anders in kunnen proggen, maar dit "ontcijferen" word denk ik toch een grotere uitdaging :(

eigenlijk is de grootste vraag van me: waar haalt hij die variabele vandaan?

nu bedenk ik me net dat de info die ik gaf mss een beetje weinig is, dus hier komt wat meer :P

dit is het scriptje dat word opgestart als een router/server/etc down gaat (SNMPc roept dit dan op) en het moet SMSen naar een lijstje met GSMnummers (nummers staan in de .ini)

de .ini file die word aangehaald is de volgende:
PHP:
1
2
3
c:\oprserv\Oproep\oprcmnd.exe
-s Harry KPN +316<censuur>
<nog wat nummers>


oprcmnd.exe is het progje dat word gebruikt om de SMS daadwerkelijk te versturen (3rd party, kan dus niet aan de source daarvan komen)


volgens mij moet dit dus goed in batch te doen zijn aangezien het enige wat gedaan moet worden is:
- variabele opslaan
- ander tooltje opstarten

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20-04 07:00
Verwijderd schreef op dinsdag 29 november 2005 @ 12:34:
nuja, met een paar how-to-guides enzo zal ik het evt. wel ergens in anders in kunnen proggen, maar dit "ontcijferen" word denk ik toch een grotere uitdaging :(
Het 'ontcijferen' heb ik in mijn vorige post voor je gedaan :).
eigenlijk is de grootste vraag van me: waar haalt hij die variabele vandaan?
Welke variabele? M.b.v. ParamCount en ParamStr worden de meegegeven argumenten command-line uitgelezen en in een variabele opgeslagen als nieuwe argumentenlijst. De rest van de variabelen haalt het programma uit mobile.ini, die er dus als volgt uitziet: 1 regel met het commando (c:\oprserv\Oproep\oprcmnd.exe) en de rest van de regels met 'standaard' argumentenstrings.

Uiteindelijk is de functionaliteit:
code:
1
2
3
4
5
6
7
8
9
blablabla.exe dit is een argument

|
|
|
v

c:\oprserv\Oproep\oprcmnd.exe -s Harry KPN +316<censuur> dit is een argument
c:\oprserv\Oproep\oprcmnd.exe <nog wat nummers> dit is een argument

Verwijderd

Topicstarter
ik heb wel een aardige beginner guide gevonden nu, en samen met de comments hier, langzaam lezen en het scriptje woord voor woord te bekijken denk ik wel dat ik eruit kom, alleen 1 ding wil ik eigenlijk nog graag hebben: een pascal cheat sheet (zoiets dus, alleen dan voor pascal)

iig al bedankt voor jullie comments :>

  • TXC
  • Registratie: Oktober 2002
  • Laatst online: 24-12-2025

TXC

Als je een Pascal programmacode hebt, zullen jullie vast ook een Pascal IDE hebben. Dan kun je deze code gewoom compilen en dan krijg je een executable die je kunt gebruiken. Lijkt me een stuk makkelijker dan het opnieuw te programmeren.

Verwijderd

Topicstarter
TXC schreef op dinsdag 29 november 2005 @ 14:43:
Als je een Pascal programmacode hebt, zullen jullie vast ook een Pascal IDE hebben. Dan kun je deze code gewoom compilen en dan krijg je een executable die je kunt gebruiken. Lijkt me een stuk makkelijker dan het opnieuw te programmeren.
ik heb een tooltje om ze naar .exe te compilen ja (anders kan SNMPc ze ook niet uitvoeren)

maar dat heeft hier niks mee te maken want ik zal een nieuw scripje moeten maken (of dit aanpassen) aangezien het huidige script niet meer voldoet aan onze eisen.

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Dit is toch echt meer iets voor PW :) Ik verplaats je topic even met een topictitel edit :)

[tool] pascal -> bat converter > Pascal begrijpen - wat doet dit programma? *
SA > PW

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Hier je batchode. Save hem als send.bat

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off

rem  Input arguments with spaces should be surrounded by "quotes"
rem  remove <? and ?> from ini file
rem  make sure no spaces behind the exe file in the ini.

set ini=c:\snmpc\apiexec\mobile.ini
set inputpars=%1% 
     
for /F "delims=@" %%a in (%ini%) do set arg=%%a & call :proc1

goto :eof

:proc1
set exe=%arg:~-4%
if /I %exe%==exe (set exe1=%arg%) else (%exe1% %arg% %inputpars%)
goto :eof
:eof

Er vanuit gaande dat er in je ini file staat:

c:\oprserv\Oproep\oprcmnd.exe
-s Harry KPN +316123123
-s Jan-Diderik KPN +23123123
-s Klaes KPN +234212431

Aanroepen:

send "kom snel naar de zaak, de SMS server ligt plat

Geeft als output:

oprcmnd.exe -s Harry KPN +316123123 "kom snel naar de zaak, de SMS server ligt plat"
oprcmnd.exe -s Jan-Diderik KPN +23123123 "kom snel naar de zaak, de SMS server ligt plat"
oprcmnd.exe -s Klaes KPN +234212431 "kom snel naar de zaak, de SMS server ligt plat"

[ Voor 26% gewijzigd door Verwijderd op 29-11-2005 20:18 ]


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20-04 07:00
ik zal een nieuw scripje moeten maken (of dit aanpassen) aangezien het huidige script niet meer voldoet aan onze eisen.
Wat zijn de nieuwe eisen? Aan de hand daarvan kan je kijken of je het in een batch-bestand kan doen of dat dat sowieso niet mogelijk is. Als je een databaseverificatie wil uitvoeren (ik noem maar een voorbeeld), dan zal je in .bat niet ver komen, en moet je sowieso op zoek naar een 'echte' taal.
offtopic:
Kennelijk kan je best heftige dingen doen met bat. Ik ben nooit verder gekomen in mijn DOS-tijd dan een menuutje maken om bepaalde dingen op te starten, dat ik vervolgens nooit gebruikte :)

Verwijderd

Topicstarter
sjroorda schreef op dinsdag 29 november 2005 @ 20:34:
[...]

Wat zijn de nieuwe eisen? Aan de hand daarvan kan je kijken of je het in een batch-bestand kan doen of dat dat sowieso niet mogelijk is. Als je een databaseverificatie wil uitvoeren (ik noem maar een voorbeeld), dan zal je in .bat niet ver komen, en moet je sowieso op zoek naar een 'echte' taal.
offtopic:
Kennelijk kan je best heftige dingen doen met bat. Ik ben nooit verder gekomen in mijn DOS-tijd dan een menuutje maken om bepaalde dingen op te starten, dat ik vervolgens nooit gebruikte :)
volgens mij kan je met bat +- alles maken wat je wilt, of het daarna nog overzichtelijk is en of het makkelijk is, das een 2de ;)

oude eisen:
het ding moest kunnen smsen. nu is het dus zo dat OF iedereen een sms krijgt, OF niemand maar het is dus niet zo dat alleen jan er 1 krijgt of alleen piet of piet en jan.

nieuwe eisen:
bij event A moet contact lijst A een sms krijgen
bij event B moet contact lijst B een sms krijgen
etc
dit is makkelijk te doen MAAR het moet ook nog eens makkelijk aan tepassen zijn d.w.z. stel we willen ook een SMS bij event Y dan moet het niet zo zijn dat we in de code gaan zitten prutsen om het scriptje "event Y compatible" te maken maar dat we gewoon een EventY.ini bestand bij maken met de nummers erin van de mensen die iets van Y moeten weten.

kortom: iets van "if A=1 goto eventA, if A=2 goto eventB"
maar het zal dus iets moeten zijn met switches. dus het scriptje opstarten met iets van "script.exe eventA" of "script.exe eventB".
dus als we dan bij een nieuw event een sms willen sturen dat we dan alleen "script.exe eventY" moeten intypen, eventY.ini aanmaken met de nummers en dat het werkt.

mijn plan was dus (zoals ik al zei) met die switches.
nu is het mij al gelukt om een bat scriptje te maken dat ,als het word opgestart met de eventY switch, eventY.bat inlaad. als het word opgestart met de ASDF switch, gaat hij kijken voor de file ASDF.bat, etc
so far so good dus
maar aangezien ik het pascal scriptje niet echt goed kan doorgronden heb ik geen idee waar hij de andere variabele vanaf haalt (bericht dat hij moet sturen enzo)


@admin
dankje :)

@olav
tnx, ga ik nu proberen :>

[ Voor 3% gewijzigd door Verwijderd op 30-11-2005 08:50 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20:47

Tomatoman

Fulltime prutser

Verwijderd schreef op woensdag 30 november 2005 @ 08:48:
[...]
maar aangezien ik het pascal scriptje niet echt goed kan doorgronden heb ik geen idee waar hij de andere variabele vanaf haalt (bericht dat hij moet sturen enzo)
Dat gebeurt met ParamStr(), waarmee de command-line parameters retourneert. De laatste parameter heeft als index ParamCount. Als je als command line
C:\Windows\Notepad.exe /p "C:\een tekstbestand.txt"
gebruikt, geldt:
• ParamCount = 2
• ParamStr(0) = C:\Windows\Notepad.exe
• ParamStr(1) = /p
• ParamStr(2) = C:\een tekstbestand.txt

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
iedereen bedankt :) het werkt nu perfect! :D

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
cd c:\script_folder\

set ini=%1.ini
set inputpars=%2 %3 %4 %5 %6

for /F "delims=@" %%a in (%ini%) do set arg=%%a & call :proc1

goto :eof

:proc1
cd c:\script_folder\oprcmnd
oprcmnd.exe -s %arg%"%inputpars%"
goto :eof
:eof


oprcmnd is het sms programma dat we gebruiken en bij set inputpars die 5 variabelen zijn de dingen die de message worden (tijd/datum/hostnaam/etc)

_/-\o_ _/-\o_ O+
Pagina: 1