89
89
kseFILE[iFileHandler] = kseToken[iMethod].sToken;
91
91
//use proper slash before checking files
92
sFilePath = Replace(sFilePath, "\", kseSLASH);
92
sFilePath = Replace(sFilePath, "\\", kseSLASH);
94
94
//im looking for colon because of //C:\//
95
95
if (InStr(1, sFilePath, kseCOLON) > 0) {
96
96
//make sure to correct relative path
97
97
sFilePath = sKonsolPath + kseSLASH + sFilePath;
100
if (kseToken[iMethod].sToken == kseREAD) {
101
if (Open(sFilePath For Input #iFileHandler) != 0) {
104
} else if (kseToken[iMethod].sToken = kseWRITE) {
105
Open sFilePath For Output #iFileHandler
106
} else if (kseToken[iMethod].sToken = kseAPPEND) {
107
Open sFilePath For Append #iFileHandler
108
} else if (kseToken[iMethod].sToken = kseRANDOM) {
109
//# idea is to, only OPEN the file when it needs to write
110
kseFILE[iFileHandler) = kseToken[iMethod].sToken + kseFILEDIV + sFilePath + kseFILEDIV + iLen;
111
//Open sFilePath For Random #iFileHandler Len = iLen
113
Engine_Message(KSE_GetErrFileSrc(iMethod) + "( " + KSE_GetToken(iMethod) + " ) is not an Access Method; Expecting ( READ/WRITE/APPEND/WREAD ].", "SYNTAX ERROR AT LINE " + kseToken[iMethod].iLine);
99
// [QuixiePP] to be implemented later
100
// if (kseToken[iMethod].sToken == kseREAD) {
101
// if (Open(sFilePath For Input #iFileHandler) != 0) {
104
// } else if (kseToken[iMethod].sToken = kseWRITE) {
105
// Open sFilePath For Output #iFileHandler
106
// } else if (kseToken[iMethod].sToken = kseAPPEND) {
107
// Open sFilePath For Append #iFileHandler
108
// } else if (kseToken[iMethod].sToken = kseRANDOM) {
109
// //# idea is to, only OPEN the file when it needs to write
110
// kseFILE[iFileHandler) = kseToken[iMethod].sToken + kseFILEDIV + sFilePath + kseFILEDIV + iLen;
111
// //Open sFilePath For Random #iFileHandler Len = iLen
113
// Engine_Message(KSE_GetErrFileSrc(iMethod) + "( " + KSE_GetToken(iMethod) + " ) is not an Access Method; Expecting ( READ/WRITE/APPEND/WREAD ].", "SYNTAX ERROR AT LINE " + kseToken[iMethod].iLine);
239
245
iIndex = LookFor(kseCLOSE_PAREN, "File Handler", iIndex); //look for )
241
247
//EXECUTE SCRIPT =============================================================
242
if (Left(kseFILE[iFileHandler), Len(kseRANDOM)) == kseRANDOM) {
243
vector<string> sFileInfo;
249
Split(kseFILE[iFileHandler), kseFILEDIV, sFileInfo);
250
iLen = CInt(sFileInfo[2]);
253
if (Dir(sFileInfo[1]) != "") {
254
Open sFileInfo[1] For Input #iFileHandler
255
iExcess = LOF(iFileHandler) % iLen;
256
if (LOF(iFileHandler) >= iExcess) {
257
sContent = Input(LOF(iFileHandler) - iExcess, iFileHandler);
262
if (Len(sWrite) >= iLen) {
263
sWrite = Left(sWrite, iLen);
265
sWrite = sWrite + String(CLng(iLen - Int(Len(sWrite))), " ");
268
sPrevText = Mid(sContent, (iLen * (iPtr - 1)) + 1, iLen);
269
sContent = Replace(sContent, sPrevText, sWrite);
274
open sFileInfo[1] For Output #iFileHandler
275
Print #iFileHandler, sContent
278
Print #iFileHandler, sWrite
248
// [QuixiePP] to be implemented later
249
// if (Left(kseFILE[iFileHandler), Len(kseRANDOM)) == kseRANDOM) {
250
// vector<string> sFileInfo;
256
// Split(kseFILE[iFileHandler), kseFILEDIV, sFileInfo);
257
// iLen = CInt(sFileInfo[2]);
260
// if (Dir(sFileInfo[1]) != "") {
261
// std::ifstream ifsFileWrite;
262
// ifsFileWrite.open(sFileInfo[1], ios::in | ios::binary);
263
// iExcess = LOF(iFileHandler) % iLen;
264
// if (LOF(iFileHandler) >= iExcess) {
265
// sContent = Input(LOF(iFileHandler) - iExcess, iFileHandler);
267
// ifsFileWrite.cloese();
270
// if (Len(sWrite) >= iLen) {
271
// sWrite = Left(sWrite, iLen);
273
// sWrite = sWrite + String(CLng(iLen - Int(Len(sWrite))), " ");
276
// sPrevText = Mid(sContent, (iLen * (iPtr - 1)) + 1, iLen);
277
// sContent = Replace(sContent, sPrevText, sWrite);
279
// sContent += sWrite;
282
// open sFileInfo[1] For Output #iFileHandler
283
// Print #iFileHandler, sContent
284
// close #iFileHandler
286
// Print #iFileHandler, sWrite
318
326
iIndex = LookFor(kseCLOSE_PAREN, "File Handler", iIndex); //look for )
320
328
//EXECUTE SCRIPT =============================================================
321
if (Left(kseFILE[iFileHandler), Len(kseRANDOM)) == kseRANDOM) {
322
vector<string> sFileInfo;
327
Split(kseFILE[iFileHandler], kseFILEDIV, sFileInfo);
328
iLen = CInt(sFileInfo[2]);
331
if (Dir(sFileInfo[1]) != "") {
332
if (Open(sFileInfo[1] For Input #iFileHandler) != 0) {
335
iExcess = LOF(iFileHandler) % iLen
336
if (LOF(iFileHandler) >= iExcess) {
337
sContent = Input(LOF(iFileHandler) - iExcess, iFileHandler)
343
Engine_Message(KSE_GetErrFileSrc(iIndex - 2) + "Pointer parameter cannot have a value of ( 0 ].", "SYNTAX ERROR AT LINE " + kseToken[iIndex - 2].iLine);
346
sRead = Mid(sContent, (iLen * (iPtr - 1)) + 1, iLen);
349
Input #iFileHandler, sRead
352
if (IsTokenStr(iValHandler)) {
353
SetStrValue(iValHandler, sRead);
354
} else if (IsTokenNum(iValHandler)) {
355
SetNumValue(iValHandler, CDbl(sRead));
356
} else if (IsTokenBool(iValHandler)) {
357
SetBoolValue(iValHandler, CByte(sRead));
359
VarNotDeclared(KSE_GetToken(iIndex), "Variable", iIndex);
329
// [QuixiePP] to be implemented later
330
// if (Left(kseFILE[iFileHandler), Len(kseRANDOM)) == kseRANDOM) {
331
// vector<string> sFileInfo;
336
// Split(kseFILE[iFileHandler], kseFILEDIV, sFileInfo);
337
// iLen = CInt(sFileInfo[2]);
340
// if (Dir(sFileInfo[1]) != "") {
341
// if (Open(sFileInfo[1] For Input #iFileHandler) != 0) {
344
// iExcess = LOF(iFileHandler) % iLen
345
// if (LOF(iFileHandler) >= iExcess) {
346
// sContent = Input(LOF(iFileHandler) - iExcess, iFileHandler)
348
// close #iFileHandler
352
// Engine_Message(KSE_GetErrFileSrc(iIndex - 2) + "Pointer parameter cannot have a value of ( 0 ].", "SYNTAX ERROR AT LINE " + kseToken[iIndex - 2].iLine);
355
// sRead = Mid(sContent, (iLen * (iPtr - 1)) + 1, iLen);
358
// Input #iFileHandler, sRead
361
// if (IsTokenStr(iValHandler)) {
362
// SetStrValue(iValHandler, sRead);
363
// } else if (IsTokenNum(iValHandler)) {
364
// SetNumValue(iValHandler, CDbl(sRead));
365
// } else if (IsTokenBool(iValHandler)) {
366
// SetBoolValue(iValHandler, CByte(sRead));
368
// VarNotDeclared(KSE_GetToken(iIndex), "Variable", iIndex);
390
399
//EXECUTE SCRIPT =============================================================
391
400
!!!On Error GoTo ptrErr
393
if (Left(sDest, 1) = "\") { sDest = Mid(sDest, 2); }
402
if (Left(sDest, 1) = "\\") { sDest = Mid(sDest, 2); }
395
404
if (InStr(1, sSource, "*") > 0) {
396
405
Engine_Log("Warning: Copy one file at a time.");