For ループでインクリメントされた変数名をリストに保存する私は。。をしようとしています
1) Unique_Files リストにリストされている一連のファイルを開きます。
2) ファイルが存在しない場合は、ダイアログ ボックスが開き、ファイルが存在することを示すメッセージが表示されます。
3) ファイルが存在する場合は、JMP でファイルを開きます。
4) ファイルが存在する場合は、データ テーブル参照名をリスト UniqueTables に追加します。
データテーブル参照名のリストを作成できることを除いて、スクリプトの他の部分はすべて機能しているようです。私のスクリプトを以下のように書いた結果がリストに表示されます
UniqueTables = { DataTable("filename1"), Data Table("filename2"),....}
代わりに、スクリプトの結果がリストに表示されるようにしたいのですが、
UniqueTables = My_Table_1、My_Table_2、My_Table_3、...
前もって感謝します。
N Items (Unique_Files);
UniqueTables = { };
For ( i = 1, i <= N, i ++,
If(
File Exists( "C:\PretendFilePath\" ||Unique_Files[i]|| ".csv"),
Eval(
Substitute(
Expr(
MyTab = Open( "C:\PretendFilePath\" ||Unique_Files[i]|| ".csv");
Insert Into( UniqueTables, MyTab)
),
Expr( MyTab),
Parse( My_Table_" ||Char(i))
)
),
New Window ("File Not Found",
<< Modal,
V List Box(
Text Box( Unique_Files[i]|| " does not exist in folder."),
Button Box( "OK")
)
)
)
);Re: For ループでインクリメントされた変数名をリストに保存するうん
Re: For ループでインクリメントされた変数名をリストに保存するあの時代は見るのが大変でした!!!!
Re: For ループでインクリメントされた変数名をリストに保存するなんだかピリオド「。」その後終わった
Show( UniqueTables );.
したがって、それを削除すると正常に動作します。今後の参考のために前の例を修正します。
Re: For ループでインクリメントされた変数名をリストに保存する最後の行で次のエラーが表示されます。
予期しない「UniqueTables」。 おそらく「;」が欠落している可能性があります。または "、"。
42 行目 1 列目: ►UniqueTables[1] << Concatenate( UniqueTables[2] );
無視された残りのテキストは、
UniqueTables[1]<Re: For ループでインクリメントされた変数名をリストに保存する
あなたは、さまざまな構造が実際に何をもたらしているのかについて、知識が不足しているようです。時間をかけてスクリプト ガイドを読むことを強くお勧めします。ただし、以下の方法で現在のコードの問題がいくつか解決されるかもしれないとも思います。以下の注釈付きコードを見て、あなたが抱えている問題に光が加わるかどうかを確認してください。
names default to here(1);
dt1=open("$SAMPLE_DATA/big class.jmp");
dt2=open("$SAMPLE_DATA/big class families.jmp");
// Here is what the value of dt1 is
show(dt1);
// From the log
// dt1 = DataTable("big class");
// Therefore the value of dt2 is,
show(dt2);
// dt2 = DataTable("big class families");
// The structure of the Concatenate Platform syntax is:
// data table("data table name") << Concatenate( data table("data table2 name"), data table("data table2 name") );
// That would mean that the following will concatenate our two files
data table( "big class" ) << Concatenate( data table( "big class families" ) );
// It also means, that since we have variables dt1, which was shown to equal Data Table( "big class" ), and
// dt2 which has the value of Data Table( "big class families" )
// the above concatenate statement can be written
dt1 << Concatenate( dt2 );
// Here is another way to do this
UniqueTables = {};
MyTab = open("$SAMPLE_DATA/big class.jmp");
insert into( UniqueTables, MyTab );
MyTab = open("$SAMPLE_DATA/big class families.jmp");
insert into( UniqueTables, MyTab );
Show( UniqueTables );
// returns
// UniqueTables = {DataTable("big class"), DataTable("big class families")};
// So now the Concatenate statement can be written
UniqueTables[1] << Concatenate( UniqueTables[2] );Re: For ループでインクリメントされた変数名をリストに保存するどういうことかをチェックしてくださいXY問題それは間違いなく私たちがあなたを助けるのに役立ちます。
でもそれ以外は。フォルダー内のすべての JMP ファイルを結合することだけを目的としている場合。
Names default to here( 1 );
// this is just creating an example set don't worry about it.
dt = open("$SAMPLE_DATA\Big Class.jmp");
dir = convert file path("$DESKTOP\Example\");
Create Directory(dir);
for(i=1, i<=6, i++,
path = convert file path(char(i)||".jmp", base(dir));
dt << Save As(path);
);
// this is actually what you'll want to run
dir = convert file path("$DESKTOP\Example\");
// find the files in that directory
files = files in directory(dir);
// create a base table
dt_final = New Table("Concatted");
for(i=1, i<=nitems(files), i++,
dt = open(convert file path(files[i], base(dir)));
dt_final << Concatenate(dt, append to first table(1));
close(dt, no save);
)Re: For ループでインクリメントされた変数名をリストに保存するこんにちは、ジムさん
残念ながら、自分の状況をどのように説明したかが明確でなかったため、まだ望ましい結果が得られていません。
Unique_Files リストがフォルダーの場所に保存されている CSV のファイル名であることを指定する必要がありました。
Unique_Files = {"FileName1", "FileName2", "FileName3", etc...}
<< Get Name 関数を使用すると、次のような UniqueTables リストが生成されます。
UniqueTables = {"FileName1", "FileName2", "FileName3", etc...}
探しているとき
UniqueTables = {My_Table_1, My_Table_2, My_Table_3, etc...}
UniqueTables リストをその形式で取得したら、それらのテーブルのいくつかを連結し、連結されたソース テーブルを閉じる計画でした。My_Table_1 というテーブル参照名を使用してこれを行う方法しかわかりません。ファイル名「FileName1」からテーブルを連結する方法はありますか?存在する場合は、この問題を完全に回避できます。
前もって感謝します!大変お世話になりました。
Re: For ループでインクリメントされた変数名をリストに保存するなぜこれをしたいのか聞いてもいいですか?これを行うと、変数名が見つからないため、スクリプトのサポートが非常に困難になります。 オーナーが自分のコードを理解できなくなったら、私はスクリプトを修正しますが、これは私が常に遭遇する問題です。
複数の変数を指定すると、リストでは得られない何が得られるのでしょうか?
持つ必要がないと思われるので、
UniqueTables[1] = My_Table_1 = DataTable("filename1");
Re: For ループでインクリメントされた変数名をリストに保存する必要なのは、データ テーブル参照からテーブル名を取得することだけなので、「Mytab」への参照を次のように変更します。
Insert Into( UniqueTables, MyTab << get name)
JSL のさまざまな要素のメッセージはすべて、スクリプト ガイドに記載されています。
ヘルプ==>スクリプトガイド