Toon posts:

JS Loop-probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een beginneling met Javascript (voor adobe acrobat). Hopelijk kunnen jullie me helpen.

Wat is de bedoeling van volgend programma:
Als COV_OFF = 4, dan moet er een waarde gecontroleerd worden, meer bepaald check_4_body_OFF. Als de waarde van laatstgenoemde: ! Check ! is, dan moet in een ander veld Off_32 een 1 bijgevoegd worden (standaard staat er een 0). Daarna moet opnieuw gecontroleerd worden of in check_4_body_OFF er een ! Check ! staat. Staat er een ! Check !, dan moet er bij Off_32 nog een 1 bijgevoegd worden. Staat er geen ! Check ! meer, dan moet de waarde die de loop altijd maar bijgevoegd heeft, geschreven worden in “Off_32”.

Mvg


var check_4_body_OFF = this.getField("Check_4_body_OFF");
var COV_OFF = this.getField("COV_OFF");
var NOTES = 0;

if (COV_OFF == 4) {
if (check_4_body_OFF == "! CHECK !") {
for (i=0; i<=25; i++){
NOTES = NOTES + i;
}
Off_32.value=NOTES;
} else{
Off_32.value=NOTES;
}
} else{
Off_32.value="0";
}

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20:01

TeeDee

CQB 241

En wat is nu je probleem?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 20-01 22:02

Yoozer

minimoog

Verwijderd schreef op vrijdag 21 oktober 2005 @ 11:48:
Ik ben een beginneling met Javascript (voor adobe acrobat). Hopelijk kunnen jullie me helpen.

Wat is de bedoeling van volgend programma:
Dat vraag ik me ook af. Over het algemeen programmeer of script je iets voor een bepaald doel, reverse-engineering is een compleet ander verhaal.

Die uitroeptekens in je (onbegrijpelijke) verhaal zijn hoogstwaarschijnlijk negaties - !Check is dus "niet-Check". De rest is eigenlijk niks als een rits conditionele statements om uiteindelijk de waarde van Off_32 in te stellen, en deze code die hieronder staat "doet" verder niks. Tenminste, de (nuttige) rest er van ontbreekt, en als je moet vragen hoe het werkt heb je 'm niet zelf geschreven, dus krijg je hoogstwaarschijnlijk van de modjes hier te horen om je maar eens te verdiepen in JS in plaats van hier random code te dumpen.

[ Voor 3% gewijzigd door Yoozer op 21-10-2005 11:55 ]

teveel zooi, te weinig tijd


  • André
  • Registratie: Maart 2002
  • Laatst online: 23-04 12:47

André

Analytics dude

Wat doe de funtie getField? Wat lukt er niet precies? Zou je de code tussen [code] blokken kunnen plaatsen?

Verwijderd

Topicstarter
Goed, ik waag nog een poging.
De getField-functie in acrobat haalt de waarde op in een veld (hier bvb: Check_4_body_OFF). Indien die waarde ! Check ! is (is in werkelijkheid een tekstveld met een ! en de check en nog een !) dan moet het script de waarde in Off_32 veranderen van 0 naar 1 (ook hier een tekstveld). Indien na het invullen van de 1 door het script het veld check_4_body_OFF nog altijd ! check ! is, dan moet het script nog een 1 bijvoegen bij de bestaande 1 van daarnet (resultaat van het veld Off_32 is nu 2). Indien in het veld check_4_body_Off de waarde ! check ! verdwenen is, dan mag de waarde in Off_32 blijven staan, indien niet: moet er nog een 1 toegevoegd worden bij de bestaande waarde van Off_32 totdat de !check! verdwenen is.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
var check_4_body_OFF = this.getField("Check_4_body_OFF");
var COV_OFF = this.getField("COV_OFF");
var NOTES = 0;

if (check_4_body_OFF == "! CHECK !") {
    for (i=0;  i<=25; i++){
        NOTES = NOTES + i;
    }
    Off_32.value=NOTES;
} else{
    Off_32.value=NOTES;
}
}


Er stonden (en nu waarschijnlijk nog!) fouten in de script. Acrobat geeft me geen foutmelding en geeft ook geen resultaat van de script. Ikzelf heb de script (proberen) te schrijven (jawel, ik ben nog een beginner) nadat ik op een aantal websites voorbeelden gevonden had over die "if-functie".
Jammer dat er dan reacties komen dat ik zomaar een "dumper" ben zonder me eerst te hebben geïnformeerd over Java. Ikzelf ben heel ervaren in het werken met Photoshop en heb eigenlijk nog nooit zo'n reactie geplaatst tegen iemand waarvan de kennis over het programma nog niet optimaal is. Ik stel mijn ervaring ter beschikking van die mensen. Als ze fouten maken, dan zal ik hen proberen te helpen zonder ze te kleineren. Sorry, dit moest me toch even van het hart...
Indien er toch nog serieuze mensen zijn die me willen helpen, dan zal ik dat ten zeerste appreciëren.


mvg

Verwijderd

Moet dit niet gewoon met een while loop? Je wilt die teller telkens verhogen totdat "!check!" verdwenen is uit dat veld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
var check_4_body_OFF = this.getField("Check_4_body_OFF");
while (check_4_body_OFF == "! CHECK !" {
    var COV_OFF = this.getField("COV_OFF");

    /*for (i=0;  i<=25; i++){
        NOTES = NOTES + i;
    }*/
    // wat deed je hier eigenlijk?? Notes werd dan altijd 25...

    Off_32.value=Off_32.value+1; // of Off_32.value++
    check_4_body_OFF = this.getField("Check_4_body_OFF");
}

Goed, wat COV_OFF hier mee te maken heeft weet ik niet, maar dit lost jouw probleem op als het goed is.

[ Voor 27% gewijzigd door Verwijderd op 21-10-2005 13:01 ]


  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 25-04 15:41
Bij je laatste stukje doe je wel wat aparte dingen. Die loop is bijvoorbeeld nergens voor nodig. Aangezien je altijd van 0 naar 25 gaat kun je dus exact uitrekenen wat het moet worden (325). Verder weet je dat bij je else {} NOTES nul is.
Dus dat stukje kan ook zo:

code:
1
off_32.value = check_4_body_OFF == "! CHECK !" ? 325 : 0;


Je kunt hierbij ook nog die COV_OFF meenemen (aangezien daar de waarde anders ook 0 is):

code:
1
off_32.value = COV_OFF && check_4_body_OFF == "! CHECK !" ? 325 : 0;


Dit is een gokje hoor, maar moet je om een waarde in off_32 te zetten niet setField() of setValue() gebruiken? Aangezien je het ook met getField() eruit haalt.
Ow, en Java != Javascript ;)

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Verwijderd

@Koeniepoenie: ik vermoed dat die forloop was voor het aantal 'pogingen', d.w.z. dat hij maximaal tot 25 wil verhogen. Zie ook zijn tekst, de waarde van Off32 moet telkens met 1 verhoogd worden, in zijn code werd het echter telkens met 25 verhoogd door die wazige for-loop.

Verwijderd

Topicstarter
Inderdaad. Die 25 is het aantal keer dat de lus kan of mag doorlopen worden.
Het resultaat blijft hetzelfde: geen foutmelding en gn verandering.
Jammer dat ik gn print-screen kan meegeven.

Verwijderd

Topicstarter
Ik heb net het progje van Boland geprobeerd. Je opmerking is inderdaad juist. Ik wil teveel ineens. Die waarde van Cov_OFF is voorlopig nog niet nodig. :-)

Je prog geeft geen foutmelding, maar ook hier wordt de waarde niet naar dat veld geschreven en blijft die ! check ! staan.

Ik ga verder testen...
Nog suggesties?

Verwijderd

[quote]Verwijderd schreef op vrijdag 21 oktober 2005 @ 13:35:
Inderdaad. Die 25 is het aantal keer dat de lus kan of mag doorlopen worden.
Het resultaat blijft hetzelfde: geen foutmelding en gn verandering.
Jammer dat ik gn print-screen kan meegeven.[/quote]
Heb je mijn code ook gebruikt? Die forloop die jij gebruikte was niet correct, aangezien er in de loop alleen een teller opgehoogd wordt.

Als je mijn code gebruikt, moet je nog even een check inbouwen bij de while of de index niet hoger is dan 25. Dit zou gewoon moeten werken, als hij uit de while loop komt en de index is 25, dan gaat er iets mis waardoor de waarde van check_4_body_off niet verandert door de waarde van off32... Ik vind het sowieso een vage constructie, waardoor zou de waarde van check_4_body_off veranderen door de waarde van off32? En heb je al SetValue geprobeerd indien dit nodig is?
Verwijderd schreef op vrijdag 21 oktober 2005 @ 13:42:
Ik heb net het progje van Boland geprobeerd. Je opmerking is inderdaad juist. Ik wil teveel ineens. Die waarde van Cov_OFF is voorlopig nog niet nodig. :-)

Je prog geeft geen foutmelding, maar ook hier wordt de waarde niet naar dat veld geschreven en blijft die ! check ! staan.

Ik ga verder testen...
Nog suggesties?
Suggestie: het setten gaat dus niet goed. Je gebruikt getvalue om de waarde op te halen, moet je dan niet setvalue gebruiken om de waarde te setten? En hoe zou de waarde van check_4_body_off veranderen door het wijzigen van de waarde van off32?? Weet je zeker dat dit wel goed gaat?

[ Voor 31% gewijzigd door Verwijderd op 21-10-2005 13:46 ]


  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 20-01 22:02

Yoozer

minimoog

Verwijderd schreef op vrijdag 21 oktober 2005 @ 12:51:
Acrobat geeft me geen foutmelding en geeft ook geen resultaat van de script.
Doe dan tussentijd eens iets als dit plaatsen :

JavaScript:
1
alert(testwaarde); 

waarbij "testwaarde" de variabele is die je wil bekijken. De alert() functie geeft een popup en pauzeert het script tijdelijk zodat je even op je gemak kan bekijken wat er gebeurt.
Ikzelf heb de script (proberen) te schrijven (jawel, ik ben nog een beginner) nadat ik op een aantal websites voorbeelden gevonden had over die "if-functie".
Het eerste programma dat je in welke programmeertaal dan ook leert is Hello World. Nergens staan er conditionele statements, je probeert alleen iets op het scherm te krijgen. Lukt dat, dan ga je verder. Dat je een beginner bent is niet erg, maar om naar if- te gaan zoeken is op z'n minst gezegd vreemd te noemen.
Jammer dat er dan reacties komen dat ik zomaar een "dumper" ben zonder me eerst te hebben geïnformeerd over JavaJavaScript.
Je plaatst hier een blok code neer waarvan niemand een idee heeft wat het eigenlijk moet doen. Je verduidelijkt het doel er van ook niet echt; er worden een paar namen van variabelen rondgeslingerd maar waar ze voor dienen, geen idee. Als je nou kon vertellen wat die code in Acrobat zou moeten doen en wat de rest (want dit is niet compleet) ongeveer inhoudt, dan kunnen mensen je hier gewoon beter helpen.
Ikzelf ben heel ervaren in het werken met Photoshop en heb eigenlijk nog nooit zo'n reactie geplaatst tegen iemand waarvan de kennis over het programma nog niet optimaal is.
Maar dat is een programma en geen programmeertaal waar genoeg tutorials voor te vinden zijn, compleet met plaatjes, uitleg en wat dan ook. Javascript heeft zo iets niet direct omdat het abstracter is - omdat je het resultaat niet gelijk ziet. De scripts die equivalent zijn aan een Photoshoptutorial moeten klakkeloos worden gekopieerd omdat ze anders niet werken; en bij Photoshop ben je veel beperkter bent in het aanpassen van de onderliggende stappen (met als gevolg dat je minder fouten kan maken).
Ik stel mijn ervaring ter beschikking van die mensen. Als ze fouten maken, dan zal ik hen proberen te helpen zonder ze te kleineren.
Ik kleineer je niet, ik maak je alleen duidelijk dat een blok code zoals dit geen zinnige antwoorden gaat opleveren tenzij je er een toelichting bij geeft. Deze is nu niet duidelijk; jij begrijpt JS nog niet goed genoeg, en wij weten niet wat je er uberhaupt mee aan wil vangen.
Indien er toch nog serieuze mensen zijn die me willen helpen, dan zal ik dat ten zeerste appreciëren.
Ik ben hardstikke serieus. Maar dit is het equivalent van met een halfgesloopte computer bij de groenteboer aankomen en dan daar vragen waarom 't niet werkt. Wat het 'dumpen' betreft, lees de gesloten topics door en zie hoeveel mensen er een stuk code neerkwakken waarvan ze niet begrijpen wat het doet, alleen dat het bij hun niet werkt. Ik probeer je hiermee alleen een gesloten thread te besparen.

[ Voor 3% gewijzigd door Yoozer op 21-10-2005 13:57 ]

teveel zooi, te weinig tijd


Verwijderd

Topicstarter
Ik hou er mee op. Mijn kennis is te beperkt om het automatiseringsproces in mijn pdf te gebruiken (dat laatste programma). Ik ben al heel content dat ik al andere dingen geautomatiseerd heb in die pdf die ik wel kon volgen. Dat laatste gaat jammer genoeg mijn petje te boven.
Persoonlijk vind ik VBA veel doorzichtelijker dan Java. Nu, ik heb sowieso nooit veel over die lussen begrepen, ook niet in VBA anders had ik misschien mijn plan wel kunnen trekken.

Bedankt voor het luisterend oor en het denkvermogen.
Verontschuldigingen voor de "uitval" en tot hoors
Pagina: 1