Read applet param with unknown name

To read an applet param, there's the method "String getParameter(String name). For using this method I need to know the parameters name.
Does anybody know a way to read all params, without knowing all possible
param names?
Thanks for any help.
Marko M�ller

Yikes ... not sure. Perhaps you could try to indicate what you are doing and implement it an alternate way. I have gotten around this in the past using various tricks. One of them (briefly) is to use a generic parameter accumulator:
<param NAME="keyValue0" VALUE="pieWedge1|15.43">
<param NAME="keyValue1" VALUE="pieWedge2|10.57">
<param NAME="keyValue2" VALUE="pieWedge3|12.00">
<param NAME="keyValue3" VALUE="pieWedge4|12.00">
<param NAME="keyValue4" VALUE="pieWedge5|25.00">
<param NAME="keyValue5" VALUE="pieWedge6|50.00">
Then you can just loop through and do
.getParameter("keyValue" + String.ValueOf(i));
and pick out all of the parameters. I pass each of the key value parameters to a decoupler, which parses out based on my "|" delimeter, and adds the parameters to a hashtable keyed on the key portion of the keyvalue pair, for easy access.
In essense, you can do this with ALL of your dynamic parameters. I tend to use logical groupings myself. That is you can separate them by using keyValue#, option#, etc so that you can differentiate various sets of dynamic parameters to your applet.
Hope this helps. If you find another way of grabbing all parameters, I would like to see what you come up with.

Similar Messages

  • Error when opening XLSX file with Excel 2003 SP3, file does open but in read only mode with temporary name

    I am using Excel 2003 SP3 and have the Office 2007 compatibility pack installed.  When I open Office 2007 formatted Excel files (XSLX) directly in Windows Explorer, I receive the following error if I do not have Excel already opened:
    "Windows cannot find '<path to file>'.  Make sure you typed the name correctly, and then try again.  To search for a file, click the Start button, and then click Search."
    Even though I receive the error, the file does open; however, it opens in Read Only mode with a name such as "Xl0000024.xls".  The number seems to increment up each time it happens.
    Now here is the strange part.  If I have Excel already open and try to open the file in Windows Explorer, the file opens fine in Modify mode with no error and with the correct file name.
    I Googled the error I was getting and found KB211494.  It says I should uncheck the box in Options on the General tab that says "Ignore other applications", but this box is already unchecked in my case.  Any other ideas?  This is
    really frustrating as a small percentage of our company has upgraded to Office 2007 with the rest still on Office 2003.

    This may be a file association problem.  To solve that:
    In Windows 7:
    1. Right-click the file,
    2. Select "Open With" 
    select [Your Program Here]
    3. Check always use this program. 
    In Windows XP:
    1. Locate the file as you have described above
    2. Right click the file
    3. Select Open with from the pop-up menu
    4. Click Choose default program…
    5. Select Excel in the Recommended Programs box
    6. Check Always use the selected program to open this kind of file
    7. Click on OK.
    1.  Make Excel not available from Office 2007 listed under Programs and Features in Control Panel.
    2. Take a registry backup using the steps given here
    3. In the registry editor window expand HKEY_CLASSES_ROOT and navigate to .xls right and delete it.
    4. Exit Registry Editor
    5. Undo Step 1 to make Excel available.
    6.  Restart the computer and verify it the issue is fixed.
    If this answer solves your problem, please check Mark as Answered. If this answer helps, please click the Vote as Helpful button. Cheers, Shane Devenshire

  • Reading flat files with variable names in SSIS

    I have a ssis package that reads a flat file from a network drive (using a flat file connection manager) and loads the data into sql server tables. I have this working on a fixed file name, however in reality the file name will not be the
    same from run to run.      Essentially, I need to check a folder each day and if there is a file there with a certain prefix (for example, 'datafile'), I need to process this file(s). In other words, if there is a file in the folder
    called datafilexyz, my process needs to read it in and process it.    If there are files named datafileabc, datafiledef, and testfile123, I need to read in and process the datafileabc and datafiledef flat files.    
    I'm not sure how to make this work.     I haven't had any SSIS training, just what I can find on the internet and looking at existing SSIS packages (I haven't found any that do what I'm trying to do here) so I'm kind of lost.   
    Any help is appreciated.  

    this is working well.    How can I, after loading each flat file, move the flat file to an archive folder?    I'm trying to use a file system task, but doing something wrong.    I created and reference
    an archive folder connection manager in the destination connection, and reference the original folder connection manager for the source connection, but get 'sourcepath is not valid on operation movefile'.    I think a file system task is what
    is needed (within the foreach loop after the data load for each flat file), but I'm not doing something correctly.
    Sounds fine except for one thing. Did you assign the filename variable to connection string property of the source file connection manager used by file system task?
    Also it should be existing file option you should choose for
    source connection and existing folder for destination.
    Please Mark This As Answer if it solved your issue
    Please Mark This As Helpful if it helps to solve your issue
    Visakh
    My MSDN Page
    My Personal Blog
    My Facebook Page

  • Reading a file with unknown characters (????)  in the filename

    Just a quick question. I have a filename which I created on a Japanese OS. The filename contains Japanese characters. When I bring this file over to an English OS it appears with ???? in the file name. I can view the file contents using notepad. However when I attempt to open the file for reading through Java it tells me that the file does not exist. Is there any way around this apart from installing a Japanese character set ????????? Please help!

    When I bring this file over to an English OS it appears with ???? in the file name.Exactly how did you "bring it over"?
    English Windows versions are reported to have problems with files from non-English versions.
    If you are not able to name the file in the English environment, you will not easily be able to open it.
    As a test, I would try to do a directory listing with File.listFiles() to see whether and how it appears.

  • How to read multiple segments with same name in IDOC

    I want to read segments in IDOC say e1edk02.I am using orders05 idoc.
    BUT If I use the statement
    CONSTANTS :
                c_segnam1     type  char19 value  'E1EDK02'.
    read table idoc_data into wa_idocdata with key segnam = c_segnam1.
    It will read only one segment.but we are populating 2 e1edk02 segments.

    LOOP AT IDOC_DATA
        WHERE DOCNUM = IDOC_CONTRL-DOCNUM.
        CASE IDOC_DATA-SEGNAM.
          WHEN 'E1EDK02'.
           MOVE IDOC_DATA-SDATA TO E1EDK02.
    reward if useful
    check FM idoc_input_orders for reference

  • How to read the param in an URL with an applet???

    I will like to read the in an URL with an applet param (after the ?)
    I need the equivalent of: String parm1 = request.getParameter("param"); but for applet
    I think the HttpServletResponse doesn't work in an applet ???
    Tell me if I'am right
    Thanks for your help
    Benoit

    Hi
    What you can do is, just get that URL in the web page. Like as we can get in the ASP. Store the required information in the variables and pass this information as parameters to the applet.
    Hope this helps!

  • How to read the data from a file in another computer with user name and password login

    How to read read the data from a file in anohter computer which need to login with user name and password?

    duplicate post:  http://forums.ni.com/t5/LabVIEW/log-on-the-other-computer-with-user-name-and-password/m-p/2061478
    duplicate post:  http://forums.ni.com/t5/LabVIEW/do-need-to-enter-the-user-name-and-password-when-TCP-ip/m-p/2061612
    duplicate post   http://forums.ni.com/t5/LabVIEW/log-on-the-other-computer-with-user-name-and-password/m-p/2060682

  • Why does a new run once start up program run every time I start my computer? The start up program is coming from Reader XI. The only name on it is a number starting with 141_______.

    Why does a new run once start up program run every time I start my computer? The start up program is coming from Reader XI. The only name on it is a number starting with 141_______.

    See also https://forums.adobe.com/thread/1654402

  • Need help with EXS24 "read velocity range from file name"

    I am trying to import 127 drum samples to a single key using the option shown here. The option says "Map to key dropped on and read velocity range from file name". I can find no documentation in the manuals on how to do this. What is the syntax required in the file name to make this work? I need to do several of these imports. The capability is cleary there, but I need help on how the file name should be formatted. My thanks to anyone who can help.

    Hi
    Not a direct answer to your question, but if you are doing a lot of sample mapping etc, you may want to check out Redmatica's KeyMap Pro or the simpler Keymap 1:
    http://www.redmatica.com
    CCT

  • Applet runs with jre 1.5 but not jre 1.6

    I'm working on an applet which works just fine when 1.5.0_15 is the latest JRE installed on the PC, but does not work when 1.6.0_6 is installed. In the latter case, the applet does not load due to getting a NoClassDefFoundError. Here's the Java Console error trace:
    java.lang.NoClassDefFoundError: com/hp/nonstop/hsc/core/configuration/ConfigurationMetaData
            at com.hp.nonstop.hsc.tools.configurator.ConfiguratorApplet.init(ConfiguratorApplet.java:53)
            at sun.applet.AppletPanel.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: com.hp.nonstop.hsc.core.configurati
    on.ConfigurationMetaData
            at sun.applet.AppletClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.applet.AppletClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
            ... 3 moreThe relevant (I think) portions of the <object> generated by the JSP is:
    <object
        classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
        name="ConfiguratorApplet" width="600" height="400"
        codebase="http://java.sun.com/products/plugin/1.3/jinstall-131-win32.cab">
    <param name="java_code" value="com.hp.nonstop.hsc.tools.configurator.ConfiguratorApplet.class">
    <param name="java_codebase" value="/HSC/configurator">
    <param name="java_archive" value="configurator.jar,../lib/configapi.jar,<<other jar files listed here>>">
    <<other param tags included here>>
    </object>The class it can't seem to find (under 1.6) is actually located in the configapi.jar file, which itself is located in the ../lib folder (relative to the /HSC/configurator folder where configurator.jar is located).
    Obviously, when the browser is using JRE 1.5.15 the VM engine can find all the needed classes as the applet runs OK. But when 1.6.6 is installed, things can't be found. I suspect something different in the search paths (though I thought the "java_archive" value was supposed to specify that), in the permissions needed to read the files, or something, but I just can't track down what the difference is (and thus why things are failing with 1.6 installed).
    Any help/ideas would be greatly appreciated!

    Stephen.Thomas wrote:
    have [you] tried moving the configapi.jar into the same folder as the configurator.jarYes, I have. I've also tried re-rooting the page to the lib directory where everything exists; i.e. changing java_codebase to /HSC/lib and changing java_archive so all jars referenced no longer have ../lib/ in them. Same behavior.
    It's almost as if the search path is behaving differently between 1.5 and 1.6, possibly not even being controlled by the values of java_codebase and java_archive at all.

  • Applet refresh with MS-VM in IE fails

    Hi,
    sorry, but I'm a real NEWBIE in java...
    My problem is:
    I use a simple freeware barchart applet on our website
    and when first opened it works fine with IE5.5 or 6 (Microsoft VM!).
    After a reload just a small part of the applet will
    be rebuilt. No error is printed out in the Java Debug Console. With the jre 1.4 used in the IE theres no
    problem!
    Has anybody an idea how to make my applet "compatible" with the MS-VM??
    Thanks in advance,
    Dirk

    Hi,
    thanks for your answer!
    Here's the code of the bar chart applet.
    I've also written a little html-testpage and SURPRISE, after running the html-File locally the Applet works in IE (with MS VM) after Refresh!
    No, I'm really confused :-(
    Any idea?
    Dirk
    the java-source:
    import java.applet.Applet;
    import java.applet.AppletContext;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.net.MalformedURLException;
    import java.net.URL;
    public class BarChartDK extends Applet
    implements MouseListener {
    private int i;
    private int AnzSaeulen;
    private int Breite;
    private int Hoehe;
    private int Hoehe_diagramm;
    private int Breite_diagramm;
    private int AktKomPos1;
    private int AktKomPos2;
    private int j;
    private int KomPos1;
    private int KomPos2;
    private int P_Rand;
    private int P_Breite;
    private int P_Hoehe;
    private int P_X;
    private int P_Y;
    private int AbsS�ulenBreite;
    private int Max_Farbe;
    private int y_VersatzBeschr;
    private int MaxWert;
    private int AktWert;
    private int MaxSaeulenHoehe;
    private int AktFarbIndex;
    private int Bod1x;
    private int Bod2x;
    private int Bod3x;
    private int Bod4x;
    private int Bod5x;
    private int Bod6x;
    private int Bod7x;
    private int Bod1y;
    private int Bod2y;
    private int Bod3y;
    private int Bod4y;
    private int Bod5y;
    private int Bod6y;
    private int Bod7y;
    private Color SaeulenFarbe;
    private Color Akt_Farbe;
    private Color Farbe[];
    private Color HGFarbe[];
    private Color BeschrFarbe;
    private int Rand[];
    //private int Horny[];
    private String Numbers;
    private String Legend;
    private String myLink;
    private String AktWertStr1;
    private String AktWertStr2;
    private URL myURL;
    private boolean BeschrJN;
    private boolean Mouse;
         public void start() {
    Farbe = new Color[13];
    Farbe[1] = str2col("CCFFFF");
    Farbe[2] = str2col("66FFFF");
    Farbe[3] = str2col("00FFFF");
    Farbe[4] = str2col("CCFF00");
    Farbe[5] = str2col("66FF00");
    Farbe[6] = str2col("00FF00");
    Farbe[7] = str2col("CCFFCC");
    Farbe[8] = str2col("FFFF66");
    Farbe[9] = str2col("FFFF00");
    Farbe[10] = str2col("FFCC00");
    Farbe[11] = str2col("FF6600");
    Farbe[12] = str2col("FF0000");
    HGFarbe = new Color[4];
    HGFarbe[1] = Color.white;
    HGFarbe[2] = Color.gray;
    HGFarbe[3] = Color.black;
    Max_Farbe = DF("BGCOLOR", HGFarbe);
    Max_Farbe = 12;
    Max_Farbe = DF("COLOR", Farbe);
    Mouse = false;
    myLink = getParameter("LINK");
    if(myLink != null) {
    Mouse = true;
    BeschrJN = true;
    Legend = getParameter("HIDENUMBERS");
    if(Legend != null) {
    BeschrJN = false;
    Breite = getSize().width;
    Hoehe = getSize().height;
    Hoehe_diagramm = Hoehe - 50;
    Numbers = getParameter("NUMBERS");
    Legend = getParameter("LEGEND");
    if(Legend == null) {
    Legend = Numbers;
    AnzSaeulen = 0;
    MaxWert = 0;
    AktKomPos1 = 0;
    if(Numbers != null) {
    do
    KomPos1 = Numbers.indexOf(",", AktKomPos1);
    if(KomPos1 < 0) {
    break;
    AnzSaeulen = AnzSaeulen + 1;
    AktWertStr1 = Numbers.substring(AktKomPos1, KomPos1);
    try {
    AktWert = Integer.parseInt(AktWertStr1);
    catch(NumberFormatException numberformatexception) {
    AktWert = 0;
    if(AktWert > MaxWert) {
    MaxWert = AktWert;
    AktKomPos1 = KomPos1 + 1;
    while(KomPos1 > 0); {
    Rand = new int[AnzSaeulen + 1];
    //Horny = new int[AnzSaeulen + 1];
    private Color str2col(String s)
    int k = Integer.decode("0x" + s.substring(0, 2)).intValue();
    int l = Integer.decode("0x" + s.substring(2, 4)).intValue();
    int i1 = Integer.decode("0x" + s.substring(4, 6)).intValue();
    return new Color(k, l, i1);
    private int DF(String s, Color acolor[])
    Numbers = getParameter(s);
    if(Numbers != null)
    AktKomPos1 = 0;
    Max_Farbe = 0;
    do
    KomPos1 = Numbers.indexOf(",", AktKomPos1);
    if(KomPos1 < 0) {
    break;
    Max_Farbe = Max_Farbe + 1;
    if(Max_Farbe == acolor.length) {
    break;
    AktWertStr1 = Numbers.substring(AktKomPos1, KomPos1 + 1);
    acolor[Max_Farbe] = str2col(AktWertStr1);
    AktKomPos1 = KomPos1 + 1;
    while(KomPos1 > 0);
    return Max_Farbe;
    public void mousePressed(MouseEvent mouseevent)
    public void mouseReleased(MouseEvent mouseevent)
    public void mouseEntered(MouseEvent mouseevent)
    public void mouseExited(MouseEvent mouseevent)
    public void mouseClicked(MouseEvent mouseevent)
    int i1 = mouseevent.getX();
    int j1 = mouseevent.getY();
    if(Mouse)
    int l = 0;
    for(int k = 1; k <= AnzSaeulen; k++)
    if(i1 >= Rand[k] && i1 <= Rand[k] + AbsS�ulenBreite && Mouse){
    l = k;
    if(l > 0){
    NewURL(FrontFarbe(l));
    stop();
    start();
    public String FrontFarbe(int SaeulenNr)
    int index1=0;
         int index2;
         String AktuellFarbe = "";
         for(i=1;i<=SaeulenNr;i++) {
    index2=Legend.indexOf(",",index1);
    AktuellFarbe=Legend.substring(index1,index2);
    index1=index2+1;
         return AktuellFarbe;
    public void NewURL(String k)
    boolean flag = true;
    int l = myLink.indexOf("*");
    int i1 = myLink.length();
    if(l > -1){
    myLink = myLink.substring(0, l) + k + myLink.substring(l + 1, i1);
    try {
    myURL = new URL(getDocumentBase(), myLink);
    catch(MalformedURLException malformedurlexception) {
    showStatus("Malformed URL : " + malformedurlexception);
    flag = false;
    if(flag) {
    getAppletContext().showDocument(myURL, "_self");
    public void paint(Graphics g)
    setBackground(HGFarbe[1]);
    P_Rand = 50;
    Breite_diagramm = Breite - P_Rand - 20;
    AbsS�ulenBreite = Breite_diagramm / AnzSaeulen;
    MaxSaeulenHoehe = Hoehe_diagramm - 20;
    y_VersatzBeschr = 1;
    P_Breite = AbsS�ulenBreite - 10;
    P_Hoehe = 100;
    P_X = 10;
    P_Y = 10;
    if(P_Breite < P_X) {
    P_X = P_Breite;
    P_Y = P_Breite;
    g.setColor(HGFarbe[2]);
    for(i = 1; i < Hoehe_diagramm / 20; i++) {
    g.drawLine(40, i * 20, Breite_diagramm + 40, i * 20);
    g.drawLine(40, i * 20, 40 - P_X * 3, i * 20 + P_Y * 3);
    AktFarbIndex = 1;
    AktKomPos1 = 0;
    AktKomPos2 = 0;
    for(i = 1; i <= AnzSaeulen; i++) {
    KomPos1 = Numbers.indexOf(",", AktKomPos1);
    AktWertStr1 = Numbers.substring(AktKomPos1, KomPos1);
    try {
    P_Hoehe = Integer.parseInt(AktWertStr1, 10);
    catch(NumberFormatException numberformatexception) {
    P_Hoehe = 0;
    AktKomPos1 = KomPos1 + 1;
    P_Hoehe = (P_Hoehe * MaxSaeulenHoehe) / MaxWert;
    KomPos2 = Legend.indexOf(",", AktKomPos2);
    AktWertStr2 = Legend.substring(AktKomPos2, KomPos2);
    AktKomPos2 = KomPos2 + 1;
    SaeulenFarbe = Farbe[AktFarbIndex];
    g.setColor(SaeulenFarbe);
    Bod2x = P_Rand;
    Bod2y = Hoehe_diagramm - P_Hoehe;
    Bod3x = Bod2x + P_X;
    Bod3y = Bod2y - P_Y;
    Bod4x = Bod3x + P_Breite;
    Bod4y = Bod3y;
    Bod5x = Bod2x + P_Breite;
    Bod5y = Bod2y;
    Bod6x = Bod5x;
    Bod6y = Hoehe_diagramm;
    Bod7x = Bod4x;
    Bod7y = Hoehe_diagramm - P_Y;
    Rand[i] = P_Rand;
    //Horny[i] = Bod2y + P_Hoehe;
    g.fillRect(Bod2x, Bod2y, P_Breite, P_Hoehe);
    for(j = Bod2x; j <= Bod5x; j = j + 2){
    g.drawLine(j, Bod2y, j + P_X, Bod3y);
    g.setColor(SaeulenFarbe);
    Akt_Farbe = SaeulenFarbe.darker();
    g.setColor(Akt_Farbe);
    for(j = Bod5y; j < Bod6y; j++){
    g.drawLine(Bod5x, j, Bod4x, j - P_Y);
    g.drawLine(Bod7x, Bod7y, Bod6x, Bod6y);
    Akt_Farbe = SaeulenFarbe.darker();
    //g.setColor(Akt_Farbe);
    g.setColor(HGFarbe[3]);
    if(BeschrJN) {
    g.drawString(AktWertStr1, Bod2x+20, Bod2y - 10);
    g.drawString(AktWertStr2, Bod2x+15, Hoehe_diagramm + 10 + 10 * y_VersatzBeschr);
    P_Rand = P_Rand + AbsS�ulenBreite;
    AktFarbIndex = AktFarbIndex + 1;
    if(AktFarbIndex > Max_Farbe){
    AktFarbIndex = 1;
    //y_VersatzBeschr = y_VersatzBeschr + 1;
    //if(y_VersatzBeschr > 3) {
    // y_VersatzBeschr = 1;
    addMouseListener(this);
    and the html testpage:
    <HTML>
    <HEAD>
         <TITLE>
              BarChartDK - Java applet for bar chart
         </TITLE>
    </HEAD>
    <BODY TEXT="white" BGCOLOR="navy" LINK="#FFFF00" ALINK="#FFFF00" VLINK="#FFFF00">
         <H1>
              HTML-Page for bar chart Demo 
         </H1>
         <P>
         <CENTER>
              <applet code=BarChartDK.class name=BarChartDK width=700 height=350 VIEWASTEXT>
                   <param name=numbers value="26,9,9,8,7,6,5,4,4,3,">
                   <param name=legend value="L11,V10,S60,C54,R11,L13,G11,C17,1,D51,">
                   <param name=color value="EEEEEE,FFFFCC,">
                   <param name=bgcolor value="FFFFFF,FFFFFF,">
                   <param name=link value="test.htm?F=*">
              </applet>
              <P>
              <TABLE BORDER=0 CELLSPACING="5">
              <TR><TD>
                   param name=numbers value="26,9,9,8,7,6,5,4,4,3,"
              </TD></TR>
              <TR><TD>
                   param name=legend value="L11,V10,S60,C54,R11,L13,G11,C17,1,D51,"
              </TD></TR>
              <TR><TD>
                   param name=color value="EEEEEE,FFFFCC,"
              </TD></TR>
              <TR><TD>
                   param name=bgcolor value="FFFFFF,FFFFFF,"
              </TD></TR>
              <TR><TD>
                   param name=link value="test.htm?F=*"
              </TD></TR>
              </TABLE>
              <HR>
         </center>
    </BODY>
    </HTML>

  • Reading Applet Parameters

    Hello,
    this may appear to be stupid question but I need a solution anyway. My problem consists of two parts:
    Part1:
    Applet-Parameters which are set in the HTML-Applet Tag in
    <param name="name" value="value"> are read from within the applet by using getParameter("name"). The documentation says that a String is returned.
    Part2:
    When I want to set the text of a JTextArea I use the setText("someText") method. If I set the text by setText("Test\nTest") the Text is set with two lines each containing one "Test" (this is what the \n is for) like this:
    Test
    Test
    Now if I do the same by using setText(getParameter("name")) and the "name" parameter's value is "Test\nTest" my Text will exactly appear as
    "Test\nTest"
    in the Textarea.
    Does anyone know of this problem?

    Yeah this is a possiblity I have thought of as well. But this appears to me to be a Java bug, because a String is a String, right? And if I do a setText("someString") it should always behave the same way, no matter where the string comes from, whether read from an applet-parameter or whatever. It's a bit strange.
    Thanks for your help
    Best regards

  • A different way to deal with "unknown" user after upgrade from Tiger.

    It's a known issue that doing upgrade and install or archive and install from Tiger to Leopard, produces a lot of folders with "unknown" group in their "get info" panel. This has to do with a different group structure in Tiger and Leopard.
    In Tiger, every user has their own private group with the same name as the username. That group is set to be user's primary group.
    In leopard, every new user with an account is a member of the group staff (gid=20) which is not present in Tiger. Leopard doesn't fully understand Tiger's private group structure, hence the "unknown" group. This causes various problems such as Finder crashes when trying to change the permissions and ownership in the get info window.
    Apple's proposed way of dealing with this is described [here|http://docs.info.apple.com/article.html?artnum=307128].
    However, this method doesn't change the existing group structure and doesn't resolve all the problems.
    I'd like to suggest a different way of dealing with it.
    1. create a new admin user (if you don't have one already), log out of your primary account and log into the new one.
    2. enter the following in terminal:
    *sudo dscl . delete /users/"username"*
    where username is the short name of the user on the main account (not the one you are currently logged into).
    This will delete that user.
    3. Log out/in.
    4. go to system preferences->accounts and create a new user with the name and short name exactly as the one you've deleted in step 2.
    You'll be get a popup saying that a home directory by this name already exists and asking if you want to use it. Say "Yes".
    That's it. Your main user will be recreated using the native group structure of Leopard with gid=20(staff). Permissions on your home directory will be reset with correct group and ownership.
    I tested the process on my powerbook after an upgrade and install from Tiger to leopard and it worked without a hitch.
    I like this method better than Apple's because it completely gets rid of Tiger's group structure which was creating all the confusion. The only downside as far as I can see is that you might have to manually change the group ownership on some files belonging to the main user that sit outside your home directory.
    I would appreciate any comments on this.

    hmm, I confess, I did this before installing 10.5.2 so i can't say for sure. However, I've dealt with a few people (see e.g. this [thread|http://discussions.apple.com/thread.jspa?messageID=7012957]) who are running 10.5.2 and still have this issue. I don't know what if anything 10.5.2 did about this but I'm quite sure that it didn't change the group structure inherited from Tiger.
    Message was edited by: V.K.

  • How can I have My applet work with the browser ??

    I created an applet but it giving an error when I try to put in a web browser
    package applet;
    //This Java Program determines the amount on maturity.
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import static java.lang.Math.*;
    import java.applet.Applet;
    public class VanExo extends Applet
         private static final long serialVersionUID = 1L;
         private JLabel amtL, yearL, interestL, valueL;
        private JTextField amtTF, yearTF, interestTF, valueTF;
        private JButton calculateB, exitB;
        private CalculateButtonHandler cbHandler;
        private ExitButtonHandler ebHandler;
        private static final int WIDTH = 400;
        private static final int HEIGHT = 300;
        public void init()
              setLayout(new GridLayout(5, 2));
                //create four labels
            amtL = new JLabel("Amount deposited : ",
                             SwingConstants.RIGHT);
            yearL = new JLabel("Duration in years : ",
                      SwingConstants.RIGHT);
            interestL = new JLabel("Interest rate : ",
                        SwingConstants.RIGHT);
            valueL = new JLabel("Value on maturity : ",
                        SwingConstants.RIGHT);
                //create four textfields
            amtTF = new JTextField(10);
            yearTF = new JTextField(10);
            interestTF = new JTextField(10);
            valueTF = new JTextField(10);
                //create Calculate Button
            calculateB = new JButton("Calculate");
            cbHandler = new CalculateButtonHandler();
            calculateB.addActionListener(cbHandler);
                //create Exit Button
            exitB = new JButton("Exit");
            ebHandler = new ExitButtonHandler();
            exitB.addActionListener(ebHandler);
            add(amtL);
            add(amtTF);
            add(yearL);
            add(yearTF);
            add(interestL);
            add(interestTF);
            add(valueL);
            add(valueTF);
            add(calculateB);
            add(exitB);
                //set the size of the window and display it
            setSize(WIDTH,HEIGHT);
            setVisible(true);
            //setDefaultCloseOperation(EXIT_ON_CLOSE);
        public void start(){
            System.out.println("Applet starting.");
         public void stop(){
            System.out.println("Applet stopping.");
         public void destroy(){
            System.out.println("Destroy method called.");
        private class CalculateButtonHandler implements ActionListener
            public void actionPerformed(ActionEvent e)
                double year, amt, interest, value;
                amt = Double.parseDouble(amtTF.getText());
                year = Double.parseDouble(yearTF.getText());
                interest = Double.parseDouble(interestTF.getText());
                value = amt * pow((1.0 + (interest/100.0)), year);
                valueTF.setText("" + String.format("%.2f", value));
       private class ExitButtonHandler implements ActionListener
            public void actionPerformed(ActionEvent e)
                System.exit(0);
    }

    here the error
    Java Plug-in 1.6.0_05
    Utilisation de la version JRE 1.6.0_05 Java HotSpot(TM) Client VM
    R�pertoire d'accueil de l'utilisateur = C:\Documents and Settings\ndiayea
    c:   effacer la fen�tre de la console
    f:   finaliser les objets de la file d'attente de finalisation
    g:   lib�rer la m�moire
    h:   afficher ce message d'aide
    l:   vider la liste des chargeurs de classes
    m:   imprimer le relev� d'utilisation de la m�moire
    o:   d�clencher la consignation
    p:   recharger la configuration du proxy
    q:   masquer la console
    r:   recharger la configuration des politiques
    s:   vider les propri�t�s syst�me et d�ploiement
    t:   vider la liste des threads
    v:   vider la pile des threads
    x:   effacer le cache de chargeurs de classes
    0-5: fixer le niveau de tra�age � <n>
    java.lang.NoClassDefFoundError: VanExo (wrong name: applet/VanExo)
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(Unknown Source)
         at java.security.SecureClassLoader.defineClass(Unknown Source)
         at sun.applet.AppletClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadCode(Unknown Source)
         at sun.applet.AppletPanel.createApplet(Unknown Source)
         at sun.plugin.AppletViewer.createApplet(Unknown Source)
         at sun.applet.AppletPanel.runLoader(Unknown Source)
         at sun.applet.AppletPanel.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    java.lang.NoClassDefFoundError: VanExo (wrong name: applet/VanExo)
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(Unknown Source)
         at java.security.SecureClassLoader.defineClass(Unknown Source)
         at sun.applet.AppletClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadCode(Unknown Source)
         at sun.applet.AppletPanel.createApplet(Unknown Source)
         at sun.plugin.AppletViewer.createApplet(Unknown Source)
         at sun.applet.AppletPanel.runLoader(Unknown Source)
         at sun.applet.AppletPanel.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    java.lang.NoClassDefFoundError: VanExo (wrong name: applet/VanExo)
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(Unknown Source)
         at java.security.SecureClassLoader.defineClass(Unknown Source)
         at sun.applet.AppletClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadCode(Unknown Source)
         at sun.applet.AppletPanel.createApplet(Unknown Source)
         at sun.plugin.AppletViewer.createApplet(Unknown Source)
         at sun.applet.AppletPanel.runLoader(Unknown Source)
         at sun.applet.AppletPanel.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    java.lang.NoClassDefFoundError: VanExo (wrong name: applet/VanExo)
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(Unknown Source)
         at java.security.SecureClassLoader.defineClass(Unknown Source)
         at sun.applet.AppletClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadCode(Unknown Source)
         at sun.applet.AppletPanel.createApplet(Unknown Source)
         at sun.plugin.AppletViewer.createApplet(Unknown Source)
         at sun.applet.AppletPanel.runLoader(Unknown Source)
         at sun.applet.AppletPanel.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    java.lang.NoClassDefFoundError: VanExo (wrong name: applet/VanExo)
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(Unknown Source)
         at java.security.SecureClassLoader.defineClass(Unknown Source)
         at sun.applet.AppletClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.applet.AppletClassLoader.loadCode(Unknown Source)
         at sun.applet.AppletPanel.createApplet(Unknown Source)
         at sun.plugin.AppletViewer.createApplet(Unknown Source)
         at sun.applet.AppletPanel.runLoader(Unknown Source)
         at sun.applet.AppletPanel.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)

  • !! Help for a looong script... begin with compare name of files, date...

    Hello Everybody, and thank you very much if you can answer to my little problem
    So here is the beginning of my script. At the end it will be a script to batch convert Psd files to jpeg in different resolutions, in different folders.
    I wanted to understand subtlety some parts of applescript, but I have to say that I failed for this case.
    So the part I am looking for is to compare files between two folders, not exactly like syncing.
    In the first Folder, psds files.
    In the second, Jpgs, wich have been made from the psds, with a 2nd part of the script, batch to jpeg.
    I want to compare these files to tell the 2nd script not to batch them to jpeg if they have not been modified.
    So the steps I would like to write :
    tell applescript to :
    1 -
    get every files of folder "psd" without invisibles
    get only the names of these files without extension
    get the modification date of these files
    2-
    get every files of folder "jpg" without invisibles
    get only the names of these files without extension
    get the modification date of these files
    3- compare the names of the files in psd's and jpg's folders (it's why I didn't want the extension)
    if some or all Psds already exist in jpg folder, then
    compare the modification dates of these same files
    and if these files in psd folder are more recent than in jpeg folder, then
    get only these modified files in psd folder, and, also the new ones (not existing in jpg folder).
    and --
    4 - launch my batchconverttojpg for this result
    (at this moment I only want to find steps 1, 2 and 3)
    --- It is important for me to do that, because the files in psd's folder will always change, and I can have really big files (like 500 or 800 mo each), and it will be really faster to batch only modified files…
    --- Here is the beginning of the script I am writing, but … bug bug bug, I don't find the good way to write that…
    set folder1 to "Macintosh HD:Users:Me:Desktop:test batch convert-script:psds" as string
    set folder2 to "Macintosh HD:Users:Me:Desktop:test batch convert-script:jpegs:Jpegs" as string
    set AppleScript's text item delimiters to ""
    tell application "System Events"
    set imgsources to every file of folder folder1 whose name does not start with "." and (file type is "psd" or file type is "JPG" or name extension is "psd" or name extension is "jpg")
    set imgcibles to every file of folder folder2 whose name does not start with "." and (file type is "psd" or file type is "JPG" or name extension is "psd" or name extension is "jpg")
    end tell
    --tell application "Finder"
    repeat with i from 1 to the count of imgsources without invisibles
    set img to (item i of imgsources as alias)
    set infosource to info for img
    set nameimg1 to name of infosource -- recupere le nom de limage + extension
    --set extimg2 to items -1 thru -4 of nameimg2 as text -- recupere l'extension
    set nimg1 to items 1 thru -5 of nameimg1 as text -- recupere le nom
    set moddateimg1 to modification date of infosource -- recupere la date de modif
    repeat with i from 1 to the count of imgcibles without invisibles
    set img2 to (item i of imgcibles as list) -- recupere tous les elements du dossier
    set infocible to info for img2 -- recupere les infos
    set nameimg2 to name of infocible -- recupere le nom de limage de destination
    set extimg2 to items -1 thru -4 of nameimg2 as text -- recupere l'extension
    set nimg2 to items 1 thru -5 of nameimg2 as text -- recupere le nom
    set moddateimg2 to modification date of infocible -- recupere la date de modif
    tell application "Finder"
    if nimg1 = nimg2 as text then
    --set nimg1 to nimg1 as string
    --set nimg2 to nimg2 as string
    --set name of img2 to folder2 & ":" & nimg2 & "-" & "2" & extimg2 as text
    set name of img2 to nimg2 & "-" & "2" & extimg2
    -- I am just trying to rename the file at this step.
    -- After this, I will compare the dates, and then, batch convert.
    end if
    end tell
    end repeat
    end repeat
    So if one of you have the good solution It will be a miracle for me
    I have to say that if I wrote this script in a simple way like that, it's to be able to understand what I do, or to understand the script after 6 month, without thinking about it…
    Thank you very much for your answers
    Fred

    Ok so there are a lot of things I didn't know about some details… And I see that I will never have succeed to write something like that…
    I don't really understand why to "set psdNames to --> {}" this last detail is unknown for me…
    And if I understand, the thing I missed is to do a listindex of the items ? it's why I didn't succeed to compare the files ?
    Then I though that it could be interesting for you or differents users to see the result. I think it works perfectly now.
    Of course, I am not professional in applescript editing, so if you have some comments or modifications, do not hesitate to post them here
    Thanks again to Red_Menace !
    Fred
    Here it is :
    (sorry I didnt translate all the notes to English. Just have to know that the script proceed in the folder where it is. If it's not save in the good folder before execute, or save as application in the good folder, then it will proceed in the default folder "applications"... so careful
    display dialog " Attention, Le script va créer un dossier psd, et déplacer les fichiers psds ici dans ce nouveau dossier" & return & " Et va ensuite procéder à la création de" & return & " Jpegs dans différents dossiers" buttons {"Ok", "Annuler", "+ d'explications"} default button "OK"
    if button returned of the result is "+ d'explications" then
    explications()
    return
    end if
    --Application utilisée : adobe photoshop CS3
    --Changer la version si besoin dans les lignes ci dessous
    --Changer le nom des dossiers ici, sans avoir à changer le reste du script
    set nomdossierpsds to "psds"
    set psdsFolder to nomdossierpsds
    set tempFolderName to "Exports"
    set tempfoldername1 to "Jpegs_HD"
    set tempfoldername2 to "Jpegs_SD"
    --Pour changer la taille des Jpegs SD --
    set choixtaille to "1200"
    tell application "Finder"
    set racine to get folder of (path to me) as Unicode text
    set nomprojet to name of folder racine
    --if folder psd exists but with different case
    if exists folder "psd" in folder racine then
    set name of folder "psd" in folder racine to psdsFolder
    end if
    if exists folder "Psd" in folder racine then
    set name of folder "psd" in folder racine to psdsFolder
    end if
    if exists folder "Psds" in folder racine then
    set name of folder "Psds" in folder racine to psdsFolder
    end if
    --2 -- check si le dossier psd existe, sinon le crée.
    if not (exists folder psdsFolder in folder racine) then
    make new folder in folder racine with properties {name:psdsFolder}
    set psdsFolder to folder psdsFolder in folder racine as alias
    open folder psdsFolder
    --display dialog "Avant de Continuer, Placer les images dans le dossier Psds" buttons {"Annuler"} default button 1
    else
    set psdsFolder to folder (racine & "psds") as alias
    end if
    --if Psd folder didnt exists, then move psd files in
    set psds to (files of folder racine whose name extension is "psd")
    move psds to folder psdsFolder
    --Dossier Jpegs Racine -- outputFolder -- check si present sinon creation
    if not (exists folder ((racine as string) & tempFolderName)) then
    set outputFolder to make new folder at racine with properties {name:tempFolderName}
    else
    set outputFolder to folder ((racine as string) & tempFolderName)
    end if
    --Dossier Jpegs HD -- outputFolder1 pour photoshop -- check si present sinon creation
    if not (exists folder (((racine as string) & tempFolderName as string) & ":" & tempfoldername1)) then
    set outputFolder1 to make new folder at outputFolder with properties {name:tempfoldername1}
    else
    set outputFolder1 to folder ((racine as string) & tempFolderName & ":" & tempfoldername1)
    end if
    set outputFolder1 to outputFolder1 as alias
    --Dossier Jpegs SD -- outputFolder2 pour photoshop -- check si present sinon creation
    if not (exists folder (((racine as string) & tempFolderName as string) & ":" & tempfoldername2)) then
    set outputFolder2 to make new folder at outputFolder with properties {name:tempfoldername2}
    else
    set outputFolder2 to folder ((racine as string) & tempFolderName & ":" & tempfoldername2)
    end if
    set outputFolder2 to outputFolder2 as alias
    end tell
    --recupere le chemin du dossier des psds à procéder
    tell application "Finder"
    set psdsFolder to folder (racine & nomdossierpsds) as alias
    end tell
    --1
    tell application "Finder" -- get file items from the folders (coerce list items to aliases for use later)
    set psdFiles to (files of folder psdsFolder whose name extension is "psd") as alias list
    set jpgFiles to (files of folder outputFolder1 whose name extension is "jpg" or name extension is "psd") as alias list
    end tell
    --2
    set psdNames to {} -- get the psd file names (these are in the same order as the file items)
    repeat with anItem in psdFiles
    set the end of psdNames to (justTheName from anItem)
    end repeat
    set jpgNames to {} -- get the jpg file names (these are in the same order as the file items)
    repeat with anItem in jpgFiles
    set the end of jpgNames to (justTheName from anItem)
    end repeat
    --3
    set filesList to {} -- figure out the files to process
    repeat with X from 1 to (count psdNames)
    set theName to contents of (item X of psdNames) -- get a name from the psd list
    if theName is in jpgNames then -- found a jpg match, so check the date
    set match to (listIndex of theName from jpgNames) -- get the index of the matching name
    tell application "Finder" -- look up the file items for the matching names and get the dates
    set psdDate to modification date of (item X of psdFiles)
    set jpgDate to modification date of (item match of jpgFiles)
    end tell
    if psdDate > jpgDate then set the end of filesList to (item X of psdFiles) -- newer file, so add
    else -- no match, so add
    set the end of filesList to (item X of psdFiles)
    end if
    end repeat
    filesList --> this list contains items (aliases) that are not in jpgsFolder or have a newer modification date
    tell application "Adobe Photoshop CS3"
    activate
    set display dialogs to never
    close every document saving no
    end tell
    repeat with aFile in filesList
    set fileIndex to 0
    tell application "Finder"
    -- The step below is important because the 'aFile' reference as returned by
    -- Finder associates the file with Finder and not Photoshop. By converting
    -- the reference below 'as alias', the reference used by 'open' will be
    -- correctly handled by Photoshop rather than Finder.
    set theFile to aFile as alias
    set theFileName to name of theFile
    end tell
    tell application "Adobe Photoshop CS3"
    activate
    open theFile
    set docRef to the current document
    set docHeight to height of docRef
    set docWidth to width of docRef
    ------------------------------------------------------------------- 1st Export to jpeg
    --Convert the document to a document mode that supports saving as jpeg
    flatten docRef
    tell docRef to convert to profile "sRGB IEC61966-2.1" intent perceptual with dithering and blackpoint compensation
    if (bits per channel of docRef is sixteen) then
    set bits per channel of docRef to eight
    end if
    --The first copy is simply saved with additional document info added
    set infoRef to get info of docRef
    set copyright notice of infoRef to "Copyright Frédéric Perrin"
    set docName to name of docRef
    set docBaseName to getBaseName(docName) of me
    --set fileIndex to fileIndex + 1
    set newFileName to (outputFolder1 as string) & docBaseName & ".jpg"
    save docRef in file newFileName as JPEG appending lowercase extension with options {class:JPEG save options, quality:12, format options:optimized}
    ------------------------------------------------------------------- 2nd export to jpeg
    -- The second copy is saved resized to width of 100 pixels proportionally
    -- There is no scale constraint in the resize image command.
    -- Use the height/width ratio to simulate the option.
    set ruler units of settings to pixel units
    set type units of settings to pixel units
    resize image current document width choixtaille height (choixtaille * docHeight / docWidth)
    -- repete la mise en memoire des variables, sinon des bugs
    set docRef to the current document
    set docName to name of docRef
    set docBaseName to getBaseName(docName) of me
    --set fileIndex to fileIndex + 1
    set newFileName2 to (outputFolder2 as string) & docBaseName & "-" & choixtaille & ".jpg"
    save docRef in file newFileName2 as JPEG appending lowercase extension --with options {class:JPEG save options, quality:12, format options:optimized}
    -- The original document is closed without saving so it remains as it was
    -- when opened for batch processing
    close current document without saving
    end tell
    end repeat
    -- Routines
    -- Returns the document name without extension (if present)
    on getBaseName(fName)
    set baseName to fName
    repeat with idx from 1 to (length of fName)
    if (item idx of fName = ".") then
    set baseName to (items 1 thru (idx - 1) of fName) as string
    exit repeat
    end if
    end repeat
    return baseName
    end getBaseName
    on justTheName from someFile
    get the name from a file path
    parameters - someFile [various]: a complete file path (POSIX or Finder)
    returns [text] - the base file name
    set someFile to someFile as text
    tell application "System Events" to tell disk item someFile
    set {theName, theExtension} to {name, name extension}
    end tell
    if theExtension is in {missing value, ""} then
    set theExtension to ""
    else
    set theExtension to "." & theExtension
    end if
    return text 1 thru -((count theExtension) + 1) of theName -- just the name part
    end justTheName
    to listIndex of anItem from someList
    get the (first) index of anItem in someList
    parameters - anItem [various]: the item to look for
    someList [list]: the list to look in
    returns [integer]: the index (0 if not found)
    set theIndex to 0
    repeat with X from 1 to (count someList)
    if (contents of (item X of someList)) is anItem then
    set theIndex to X
    exit repeat
    end if
    end repeat
    return theIndex
    end listIndex
    on explications()
    tell application "TextEdit"
    activate
    make new document
    set text of front document to ¬
    "--- Attention --- Le Script se lance pour gérer le dossier dans lequel il se trouve." & return & return & ¬
    "Pour ne plus voir ce message, ouvrir le script/application et l'éditer avec un éditeur comme Editeur applescript : Effacer alors le premier paragraphe --> End Message" & return & return & return & ¬
    "Il vérifie l'existence d'un dossier Psd, s'il existe, mais pas dans la bonne casse, renomme le dossier --" & return & "Donc -- attention -- si d'autres scripts sont chainés à ce dossier, il faudra mettre à jour la casse ou orthographe, sinon changer les variables en début de script afin que tous les scripts marchent avec le meme nom de ce dossier psd" & return & return & ¬
    "Une fois cela géré, le dossier -psds- est créé, sil n'est pas deja la. Les fichiers psds pouvant être présents à la racine du dossier, où se trouve le script, seront déplacés dans le dossier psd" & return & ¬
    "Ensuite, création d'un dossier jpeg contenant deux autres dossiers : jpgs HD et Sd, le 1er contiendra les jpegs à la resolution source du psd, le dossier Sd à la résolution de 1200px, soit acceptable pour le web ou le partage temporaire" & return & return & ¬
    "Pour finir, le script peut être relancé à l'infini, les dossiers se synchronisent en fonction du dossier Psd et JpegsHD. Si de nouveaux fichiers se trouvent dans le dossier Psd, ou bien sils ont été modifiés, alors ils seront re-batchés en jpegs dans les dossiers correspondants." & return & ¬
    "Donc -- Attention -- , ne jamais faire de retouches sur les fichiers Jpegs, seulement sur les psds, et -- attention-- aussi, les fichiers jpegs correspondants aux psds retouchés seront écrasés" & return & ¬
    "Pour conserver des versions des fichiers, à la main, renommer séquentiellement les psds à l'enregistrement dans photoshop, ainsi les jpegs seront séquentiels aussi" & return & return & return & ¬
    "La préférence, de choisir à la main la séquence des fichiers psds semble être plus pratique à l'usage, et de garder un minimum la main sur les images, afin de s'y retrouver" & return & return & return
    end tell
    end explications
    -------------------------------------------------------------------

Maybe you are looking for