JSL은 어떻게 테이블의 데이터를 지정된 이진 파일로 직접 수정할 수 있습니까?"Text.blk"는 C:\에 저장된 이진 파일로, JSL이 데이터 테이블의 데이터를 쓰고, 다시 쓰고, 바꿀 수 있는 방법입니다.
다음 코드는 Excel 열 A의 데이터를 C에 쓸 수 있는 Excel의 VBA 코드입니다. text.blk.

Sub text()
Dim arr, I, filename As String, t As Long
filename = "c:\text.BLK"
Open filename For Binary As #1: arr = Range("a2:a" & Cells(Rows.Count, "a").End(3).Row)
For r = 1 To UBound(arr)
If Left(arr(r, 1), 2) = "12" Then arr(r, 1) = 1000000 + arr(r, 1)
Next
For I = 1 To UBound(arr, 1)
If IsNumeric(arr(I, 1)) Then Put #1, , CLng(arr(I, 1))
Next
Close #1
End Sub자동화 및 스크립팅Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?강력한 JMP

Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?크레이지 감사합니다!
그렇게 할 것입니다. 향후 JSL로 직접 수행할 수 있습니다.
시도했습니다. 특정 데이터에는 여전히 +1000000이 필요합니다.

Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?필요한 경우 1,000,000을 추가해야 하지만 다음과 같습니다.
dt = Open( "$desktop/1T.jmp" );
filename = Save Text File(
"$temp/deleteme.blk",
Matrix To Blob( dt:code << getvalues, "int", 4, "little" )
);
따라하는 사람:
- LoadTextFile 및 SaveTextFile 함수는 일반적으로 문자열 텍스트 데이터로 작동하며 CRLF 엔딩을 변경하고 UNICODE 바이트 순서 표시를 추가하며 ASCII NUL 문자를 처리할 수 없습니다. 단, JMP의 BLOB 방식과 함께 사용할 경우 바이너리 데이터만으로 파일을 읽고/씁니다.
- BlobToMatrix 및 MatrixToBlob은 역함수입니다. 모든 배열 요소 또는 모든 blob 요소를 1, 2, 4 또는 8바이트 청크로 처리합니다. 또한 배열 요소(항상 배정밀도 8바이트 숫자)를 BLOB의 부호 있는 정수 또는 부호 없는 정수 또는 부동 소수점 숫자로 만들 수 있습니다. 그리고 Blob에서 빅 엔디안과 리틀 엔디안 표현을 처리할 수 있습니다. 그리고 BlobToMatrix에는 행렬에 여러 열을 만들기 위한 추가 인수가 있습니다.
- BlobPeek을 사용하여 균일한 청크 크기가 아닌 이진 데이터의 섹션을 처리하고 || Blob을 다시 결합하는 연산자를 연결합니다.
Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?"1T.blk" 파일을 다시 다운로드 하시고,
그 구조와 "1T.blk" 형식으로 테이블의 4개 행을 저장하는 방법을 참조하십시오.
크레이지 감사합니다!

Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?크레이지 감사합니다!
알겠어요. 잘못된 방향입니다.
"1T.blk" 데이터를 테이블에 쓰는 대신 테이블의 데이터를 "1T.blk"로 저장합니다.
나는 "1T. BLK ", 테이블의 데이터가 저장될 파일 형식을 나타냅니다.
JSL 작성을 시도했습니다.

하지만 아직까지 데이터를 그래프 형태로 테이블에 저장하는 방법을 모르겠습니다. 저장된 파일 접미사 이름이 핵심이 아닙니다.
dt = Current Data Table();
dt << New Column( "new", formula( If( Left( Char( :code ), 2 ) == "12", 1000000 + :code, :code ) ) );
dt << run formulas;
Column( "new" ) << deleteFormula;
Wait( 0 );
mx = dt << GetAsMatrix( {2} );
mx << Save( "C:\1T.BLK" );//The saved file suffix name is not the key.Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?나는 BLK 파일에 대해 아무것도 모르고 VBA에 대해서는 거의 알지 못하지만 BLK 파일이 정말 단순한 경우일 수 있습니다.
b = loadTextFile("z:/text.blk",blob()); // load your file
mat = blobtomatrix(b,"int",4,"little"); // operate on matrix data
/*:
[1123029, 1113555, 1110044, 1113038, 1113581, 1128108, 1110073, 1113509, 1113521,
1113037, 1113576, 1113586, 1113580, 1113035, 1113027, 1113592, 1113599, 1110059,
1113556, 1113565, 1113595, 1113543, 1113600, 1113520, 1113575, 1110072, 1113571,
1110067, 1113029, 1113582, 1113601, 1113011, 1110058, 1113034, 1113561, 1113593,
1113550, 1113008, 1110066, 1113548, 1113583, 1113039, 1113562, 1113537, 1113577,
1113527, 1113587, 1113541, 1113596, 1110053, 1113578, 1113526, 1113566, 1113591,
1113585, 1113589, 1110074, 1113572, 1110060, 1113590, 1113568, 1113021, 113555,
113038]이전 파일에서 64개의 정수를 예상했다면 그것이 포함된 전부입니다. 값이 어떤 순서(행 전공? 열 전공? 기타?)인지 모르겠습니다.
Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?크레이지 감사합니다!
나는 당신의 JSL 코드를 배웠고 분열이 없습니다.
제가 너무 부주의해서 실수로 "text.blk" 파일을 올렸습니다.죄송합니다.
원본 업로드는 표의 4개 데이터와 일치하지 않았습니다.
내 요구 사항은 테이블의 4개 데이터 포인트를 *.blk 파일로 새 파일로 출력하는 것입니다. 원본 BLK 파일은 출력 전에 삭제되었습니다.
특정 VBA Excel 파일을 다시 업로드하고 파일을 연 다음 "BLK" 버튼을 클릭하면 "1t. BLK" 파일을 "C:\" 경로에 저장합니다.

JSL 코드를 작성하는 방법에 대한 요청은 VBA의 이 기능을 달성할 수 있습니다. 테이블의 4개 데이터는 직접 생성되고 VBA는 정확히 동일한 BLK 파일을 생성합니다.
감사해요!
Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?b = loadTextFile("z:/text.blk",blob()); // load your file
hex = hex(b); // operate on hex data
show(hex); // the binary data is now character data
last4hex = right(hex,8); // two hex characters per byte
last4blob = blobpeek(b,length(b)-4,4); // operate on blob data
show(hex(last4blob)); // same data as above
mat = blobtomatrix(b,"int",4,"big"); // operate on matrix data
show(mat[nrows(mat)],hextonumber(last4hex),blobtomatrix(last4blob,"int",4,"big")); // all the same
// change the hex data (1-based offset to substr function, doubled. this is why programmers count from 0.)
show(substr(hex,5,4)); // the 3rd and 4th bytes, "1100". lets change them to "FE23"
hex = substr(hex,1,4) || "FE23" || substr(hex,9);
show(hex);
f1=savetextfile("$temp/text1.blk", hextoblob(hex)); // convert hex to blob before saving
// do the same with a blob (0-based offset to blobpeek function)
f2=savetextfile("$temp/text2.blk",blobpeek(b,0,2)||hextoblob("FE23")||blobpeek(b,4));
// do the same with a matrix. the matrix above is 4-bytes/element, lets use 1 instead
mat = blobtomatrix(b,"int",1,"big");
mat[3]=hextonumber("FE"); // 1-based matrix index
mat[4]=hextonumber("23");
f3=savetextfile("$temp/text3.blk",matrixtoblob(mat,"int",1,"big"));
// check our work:
b1=loadtextfile(f1,blob());
b2=loadtextfile(f2,blob());
b3=loadtextfile(f3,blob());
if(b1==b2==b3, write("\!nmatch, as expected"), write("\!nERROR"));
// this shows the changed data
show(shortesteditscript(hex(b),hex(b1)));Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?나는 그것을 쓰려고 노력했지만 요점이 불분명했습니다.
감사해요!

Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?크레이지 감사합니다!
JSL을 사용하여 이러한 작업을 직접 수행할 수 있습니까?
첫 번째 방법을 JSL로 작성할 수 있는지 궁금합니다.
감사합니다 전문가!
Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?blob 옵션과 함께 loadTextFile을 사용하십시오(파일 유형을 무시함). 그런 다음 수행하려는 작업에 따라 다음 중 하나를 수행합니다.
- Blob을 16진수로 변환, 16진수 조작(2진 바이트의 두 배 문자), 16진수를 Blob으로 다시 변환
- blobPeek()를 사용하여 blob을 분할한 다음 주입된 데이터로 blob을 재조립합니다.
- blobToMatrix를 사용하여 데이터를 추출하고 matrixToBlob을 사용하여 blob을 재조립합니다. 이것은 아마도 가장 강력하고 빠르며 파일에 따라 사용하기 가장 쉽거나 어려울 것입니다. blobToMatrix 함수는 전체 blob(위의 2일 수 있음)을 매트릭스의 1, 2, 4 또는 8바이트 청크로 분해합니다. 청크는 빅 엔디안 또는 리틀 엔디안 정수 또는 부동 소수점이 될 수 있습니다. (데이터가 스테레오 wav 파일인 경우 예를 들어 16비트 정수 샘플의 2열 매트릭스를 만들 수 있습니다.)
마지막으로 saveTextFile을 사용하여 Blob을 저장합니다. 저장할 Blob 또는 텍스트 문자열을 제공하기 때문에 Blob 옵션이 필요하지 않습니다.
Re: JSL이 테이블의 데이터를 지정된 바이너리 파일로 직접 수정하려면 어떻게 해야 합니까?텍스트.BLK
암호
123029
128108
113555
113038