Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1119
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Als Ergebnis habe ich durch 8000 geteilt, so dass die Werte des Arrays in ihre Indizes passen
Sag du es mir...
DateiGröße
Gibt die Dateigröße in Bytes zurück.
Typ
Größe in Bytes
Positiver Mindestwert
Maximaler Wert
Analog in C++
Schwimmer
4
1.175494351e-38
3.402823466e+38
Schwimmer
doppelt
8
2.2250738585072014e-308
1.7976931348623158e+308
doppelt
Dateigröße in Bytes, die vom Typ double belegte Größe in Bytes, die durch zhzhezhezhezhezhezhezhez zu dividieren ist
Sag du es mir...
Typ
Größe in Bytes
Minimaler positiver Wert
Maximaler Wert
Analog in C++
Schwimmer
4
1.175494351e-38
3.402823466e+38
Schwimmer
doppelt
8
2.2250738585072014e-308
1.7976931348623158e+308
doppelt
Dateigröße in Bytes, die vom Typ double belegte Größe in Bytes, und es ist obligatorisch, durch zhzhezhezhezhezhezhezhezhez zu teilen
Was ist ein Zzzzzz? Das passt nicht zusammen. Kannst du dich nicht beruhigen?
Получается, что если массив динамический, то формула /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);//записываем в файл все элементы массива
Der Code der Zeile, die die bin-Datei um einen neuen Balken ergänzt
{
// 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;
}
Получается, что если массив динамический, то формула /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);//записываем в файл все элементы массива
Der Code der Zeile, die die bin-Datei um einen neuen Takt ergänzt
{
// 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;
}
Ich weiß nicht mehr, wo ich es gelesen habe, aber wenn man eine Datei nur zum Schreiben öffnet, wird alles darin gelöscht.
Die Datei muss zum Lesen und Schreiben geöffnet werden
Ich weiß nicht mehr, wo ich es gelesen habe, aber wenn eine Datei nur zum Schreiben geöffnet wird, wird alles in ihr gelöscht.
Die Datei muss zum Lesen und Schreiben geöffnet werden
Ich dachte, das war's.
Wenn ich neue Daten an den Anfang schreibe, wird der gesamte Anfang beschrieben. Gibt es eine Möglichkeit, die Größe des Anfangs zu erhöhen?)
Ich meine, kann man nur bis zum Anfang schreiben oder auch bis zum Ende speichern?
Und wenn ich bis zum Ende speichere und weiter bis zum Ende hinzufüge, wie lese ich dann vom Ende her den richtigen Betrag ab? Oder vielmehr, wie man aus der bin-Datei den richtigen Abschnitt vonN bis zum Ende erfasst
Oder habe ich es mit den falschen Befehlen gemacht!?
Ich speichere zwei Arrays am Ende ab - es wird so geschrieben, wie ich es verstehe, indem ich das Gewicht der Tonne richtig erhöhe.
Dann versuche ich, Daten in das Array zu übertragen, mit der Aufgabe, den letzten Datensatz zu erfassen, wobei die Dateibins größer sind als das Array.
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);
Wenn ich den erforderlichen Abschnitt aus der Binärdatei mit
Der Algorithmus verarbeitet das Array selbst, die fehlenden Zellen werden ähnlich wie die Position im Bin übersetzt, was wiederum den gewünschten Bereich an der Grenze der gleichen Position wie im Bin ergibt, nur mit Nullen.
Wenn ich den erforderlichen Abschnitt aus der Binärdatei mit
Der Algorithmus verarbeitet das Array selbst, fehlende Zellen werden in ähnlicher Weise in die binäre Position übersetzt, was wiederum den angeforderten Bereich in der Grenze der gleichen Position wie in der Binärdatei ergibt, nur mit Nullen.
Ich verstehe nicht, was da schief gehen kann...
Sie öffnen die Datei einfach zum Lesen.
Verschiebung des Zeigers um die richtige Anzahl von Bytes in die richtige Richtung
// В данном случае от конца файла на 32 байта
32 Bytes sind 8 Ganzzahlwerte oder 4 Gleitkommawerte.
Wenn das Array zweidimensional ist, bedeutet dies, dass wir um 4 Zeilen verschieben, wenn das Array vom Typ int ist, oder um 2 Zeilen, wenn das Array vom Typ double ist
Dann lesen wir die Werte in das zuvor als dynamisches arr[][2] deklarierte Array ein; dies ist ein zweidimensionales Array.
DAS WAR'S!!!
Bestimmen Sie dann die Größe des Arrays
und drucken dann die Werte aus.
int i, z;
for(i = 0; i < size; i++)
{for(z = 0; z < 2; z++)
{
Print("arr[", i, "][", z, "]", arr[i][z]);
}
}
Ich verstehe nicht, was da schief gehen kann...
Vielen Dank, Sie! Es hat funktioniert)))