Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1119

 
Top2n :
sonunda, dizi değerlerinin indekslerinde durması için 8000'e böldüm

Sen en iyisini bilirsin...

Dosya boyutu

Dosya boyutunu bayt cinsinden döndürür.

Tip

Bayt cinsinden boyut

Minimum pozitif değer

Maksimum değer

C++'da analog

batmadan yüzmek

4

1.175494351e-38

3.402823466e+38

batmadan yüzmek

çift

sekiz

2.2250738585072014e-308

1.7976931348623158e+308

çift


Dosyanın bayt cinsinden boyutu, bayt cinsinden çift türün kapladığı boyut ve zhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzh ile bölmek gerekir



 
Alexey Viktorov :

Sen en iyisini bilirsin...

Tip

Bayt cinsinden boyut

Minimum pozitif değer

Maksimum değer

C++'da analog

batmadan yüzmek

4

1.175494351e-38

3.402823466e+38

batmadan yüzmek

çift

sekiz

2.2250738585072014e-308

1.7976931348623158e+308

çift


Dosyanın bayt cinsinden boyutu, bayt cinsinden çift türün kapladığı boyut ve zhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzh ile bölmek gerekir



zhzhzhzhzh nedir? Bana uymuyor, kahretsin, daha kolay olamaz mı?
 
Top2n :
zhzhzhzhzh nedir? Bana uymuyor, kahretsin, daha kolay olamaz mı?
Lütfen biraz beyninizi sıkın. Sadece önerebilirim, senin için yapmayacağım. Elinizde hangi veriler var, dizinin boyutu nedir... Bütün bunları hatırlamaya ve sizi elden zafere götürmeye hiç niyetim yok.
 

Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -  

Выходит, что вторичный массив записывается на первичный, возможно перед записью что то сделать нужно
FileSeek (handle, 0 , SEEK_END );
Люди записывают переменные в массив, возможно поможет? типо такого

int  dataArraySize =  ArraySize (dataArray);  //записываем в переменную размер массива
int  fileHandle =  FileOpen ( "filename.dat"FILE_BIN  |  FILE_WRITE );  // открываем файл на запись в бинарном режиме.
FileWriteInteger (fileHandle, dataArraySize); //записываем в файл размер массива
FileWriteDouble (fileHandle, dataArraySize); //записываем в файл все элементы массива

 


Bin dosyasını yeni bir çubukla tamamlayan satırın kodu

if (count==size)
        {
       //  ArrayResize(arrS,coun);  
         for ( int q= 0 ; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
           {
            arrS[q]=sm.d[q].m[rates_total- 1 ];                 // M(I) SMA
            coun++; 
           }
         ResetLastError ();
         int handle= FileOpen (path, FILE_WRITE | FILE_BIN );
         if (handle!= INVALID_HANDLE )
           {
             //--- запишем данные массива в конец файла
             FileSeek (handle, 0 , SEEK_SET );
             FileWriteArray (handle,arrS);
             Print ( "arrS = " ,arrS[ 0 ], " arrS = " ,arrS[ 1 ], " arrS = " ,arrS[ 3 ]);
             //--- закрываем файл
             FileClose (handle);
           }
         else
             Print ( "Failed to open the file, error " , GetLastError ());
         count= 1 ;
        }
 
Top2n :

Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -  

Выходит, что вторичный массив записывается на первичный, возможно перед записью что то сделать нужно
FileSeek (handle, 0 , SEEK_END );
Люди записывают переменные в массив, возможно поможет? типо такого

int  dataArraySize =  ArraySize (dataArray);  //записываем в переменную размер массива
int  fileHandle =  FileOpen ( "filename.dat"FILE_BIN  |  FILE_WRITE );  // открываем файл на запись в бинарном режиме.
FileWriteInteger (fileHandle, dataArraySize); //записываем в файл размер массива
FileWriteDouble (fileHandle, dataArraySize); //записываем в файл все элементы массива

 


Bin dosyasını yeni bir çubukla tamamlayan satırın kodu

if (count==size)
        {
       //  ArrayResize(arrS,coun);  
         for ( int q= 0 ; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
           {
            arrS[q]=sm.d[q].m[rates_total- 1 ];                 // M(I) SMA
            coun++; 
           }
         ResetLastError ();
         int handle= FileOpen (path, FILE_WRITE | FILE_BIN );
         if (handle!= INVALID_HANDLE )
           {
             //--- запишем данные массива в конец файла
             FileSeek (handle, 0 , SEEK_SET );
             FileWriteArray (handle,arrS);
             Print ( "arrS = " ,arrS[ 0 ], " arrS = " ,arrS[ 1 ], " arrS = " ,arrS[ 3 ]);
             //--- закрываем файл
             FileClose (handle);
           }
         else
             Print ( "Failed to open the file, error " , GetLastError ());
         count= 1 ;
        }


Nerede okuduğumu hatırlamıyorum ama dosya sadece yazmak için açılmışsa içindeki her şey silinmiştir.

int handle= FileOpen (path, FILE_WRITE | FILE_BIN );

Dosya okuma ve yazma için açılmalıdır.

int handle = FileOpen (path, FILE_READ | FILE_WRITE | FILE_BIN );
Dosyayı salt okunur olarak açarsak, yazma bayrağı belirtilemez ve daha da iyisi belirtilemez.
 
Alexey Viktorov :

Nerede okuduğumu hatırlamıyorum ama dosya sadece yazmak için açılmışsa içindeki her şey silinmiştir.

int handle= FileOpen (path, FILE_WRITE | FILE_BIN );

Dosya okuma ve yazma için açılmalıdır.

int handle = FileOpen (path, FILE_READ | FILE_WRITE | FILE_BIN );
Dosyayı salt okunur olarak açarsak, yazma bayrağı belirtilemez ve daha da iyisi belirtilemez.
Beni bağışlayın, ama zaten başardım) sorun da bunlardan biriydi)) dürtme ile kazdım)))
 

AAA işe yaradığını düşündü

Başa yeni veri yazarım, tam başa yazıyor, bir şekilde başlangıcın boyutunu büyütmek mümkün mü))

Yani başlangıca giriş sınırlı mı? Yoksa sadece sonuna kadar tasarruf etmeye devam mı?

FileSeek (handle, 0 , SEEK_SET );

Ve eğer verileri sonuna kadar kaydedersem ve sonuna eklemeye devam edersem, o zaman sondan istenen miktara kadar nasıl okurum? Daha doğrusu bin dosyasından istenen parçanın N'den sonuna kadar nasıl yakalanacağı

Yoksa yanlış takımlarla mı yaptı!?!?

İki diziyi sona kaydediyorum - kutunun ağırlığını doğru bir şekilde artırarak anladığım gibi yazılmış.

Ardından, son kaydı yakalama görevi ile verileri bir diziye aktarmaya çalışıyorum, bin dosyasının boyutu diziden daha büyük.

   ResetLastError ();
   int file_handle= FileOpen (path, FILE_READ | FILE_BIN );
   if (file_handle!= INVALID_HANDLE )
     {
       //--- прочитаем все данные из файла в массив
       //file_siz=FileSize(file_handle)/8000;
      // FileSeek (file_handle,file_size, SEEK_END );
       FileReadArray (file_handle,arr);
       //--- получим размер массива
       int siz= ArraySize (arr);
       //--- распечатаем данные из массива
       Print ( "arr = " ,arr[ 1 ][ 3 ], " Bid = " ,arr[ 1 ][ 2 ], " Ask = " ,arr[ 0 ][ 3 ]);
       Print ( "file_siza = " ,file_siz);
       //--- закрываем файл
       FileClose (file_handle);
FileSeek (file_handle,file_size, SEEK_SET );  что делает  - определяет положение массива или в бине?
 

Kullanarak bir ikili dosyadan istenen bölümü okursam

FileReadArray (file_handle,arr, 0,WHOLE_ARRAY );

O zaman istenilen sonuç elde edilemez, algoritma diziyi kendisi işler, hücrenin belirtilen bölümüne düşmeyenler bindeki pozisyona benzer şekilde yayınlanır, bu da aynı limitte istenen boşluğu verir. sadece sıfırlarla kutudaki gibi konumlandırın.

 
Top2n :

Kullanarak bir ikili dosyadan istenen bölümü okursam

FileReadArray (file_handle,arr, 0,WHOLE_ARRAY );

O zaman istenilen sonuç elde edilemez, algoritma diziyi kendisi işler, hücrenin belirtilen bölümüne düşmeyenler bindeki pozisyona benzer şekilde yayınlanır, bu da aynı limitte istenen boşluğu verir. sadece sıfırlarla kutudaki gibi konumlandırın.

Neyin yanlış gidebileceğini anlamıyorum...

Sadece aptalca dosyayı okumak için aç

handle = FileOpen (path, FILE_READ | FILE_BIN );

işaretçiyi istenen yönde gerekli bayt sayısı kadar kaydırın

FileSeek (handle, - 32 , SEEK_END );
// В данном случае от конца файла на 32 байта

32 bayt, 8 tam sayı değeri veya 4 kayan nokta değeridir.

Dizi iki boyutluysa, bu, dizi int türündeyse 4 satır, dizi türü double ise 2 satır kaydırdığımız anlamına gelir.

Daha sonra, dinamik arr[][2] olarak önceden bildirilen bir diziye değerleri okuruz; Bu iki boyutlu bir dizidir.

FileReadArray (handle, arr);

TÜMÜ!!!

Ardından, dizinin boyutunu belirlersiniz

int size = ArrayRange (arr, 0 );

ve elde edilen değerleri yazdırın

int i, z;

for (i = 0 ; i < size; i++)

  {
   for (z = 0 ; z < 2 ; z++)
    {
     Print ( "arr[" , i, "][" , z, "]" , arr[i][z]);
    }
  }
 
Alexey Viktorov :

Neyin yanlış gidebileceğini anlamıyorum...

Teşekkür ederim! başarılı oldu)))