Ошибка: Программа не содержит статического метода "Main", подходящего для точки входа - C#
Формулировка задачи:
Доброго времени суток!
Подскажите, пожалуйста, почему мой Main() является неподходящим для входа?
Заранее премного благодарен!
using System; using System.Net; using System.Collections.Generic; using System.Text; using System.IO; class ReadDBF { static byte[] f; static byte[] fut; static int[, , , , ,] t; static int[] p; static ushort[] v0; static byte b10 = 10, b0 = 48, b9 = 57, del = 127; static byte B2(int k) { byte bn = f[k + 1], b = f[k]; if (b < b0 || b > (byte)53 || bn < b0 || bn > b9) { b = del; Console.WriteLine("Ошибка! Нецифровой символ в дате или времени, или >59 - байт №" + k); return b; } b -= b0; bn -= b0; b *= b10; b += bn; return b; } static void Main () { bool ch = false; int m, h, l, n, last, leng, j = 1, k = 48, j1 = 0, j2 = 0, jb = 0, j0 = 0, sn = 1, s2, s4, s5, i = 0, yi, yc, nch = 0, nnoch = 0, near = 0, noint = 0, pi, ds, vi; int[] s = new int[10]; int[] nf = new int[9]; string[] sf = { "RTS", "SBRF", "Si", "GAZR", "LKOH", "VTBR", "ROSN", "GMKN", "SBPR" }; int[] maxp = { 252000, 9300, 40000, 39000, 29000, 11000, 30000, 90000, 6000 }; int[] minp = { 45000, 1300, 20000, 9700, 9300, 1800, 9000, 10000, 600 }; byte y = b0, mon = 0, dat = 0, hr = 0, mnt = 0, sec = 0, o = 48, q = 0, yn, mn, dn, b23 = 23, b59 = 59, b19 = 19, sp = 32, a = 42, hy = 45, po = 46, c = 44, co = 58, R = 82, T = 84, S = 83, B = 66, F = 70, G = 71, A = 65, Z = 90, L = 76, K = 75, O = 79, H = 72, V = 86, P = 80, N = 78, M = 77, bi = 105; DateTime dt = DateTime.Now; yi = dt.Year; if (yi > 2000) yi -= 2000; yn = (byte)yi; mn = (byte)dt.Month; dn = (byte)dt.Day; yi = yn << 8; yi += mn; yi <<= 8; yi += dn; WebClient user = new WebClient(); ... }}
Решение задачи: «Ошибка: Программа не содержит статического метода "Main", подходящего для точки входа»
textual
Листинг программы
using System; using System.Net; class ReadDBF { static byte[] f; static byte[] fut; static int[, , , , ,] t; static int[] p; static ushort[] v0; static byte b10 = 10, b0 = 48, b9 = 57, del = 127; static byte B2(int k) { byte bn = f[k + 1], b = f[k]; if (b < b0 || b > (byte)53 || bn < b0 || bn > b9) { b = del; Console.WriteLine("Ошибка! Нецифровой символ в дате или времени, или >59 - байт №" + k); return b; } b -= b0; bn -= b0; b *= b10; b += bn; return b; } static void Main(string[] args) { bool ch = false; int m, h, l, n, last, leng, j = 1, k = 48, j1 = 0, j2 = 0, jb=0, j0=0, sn = 1, s2, s4, s5, i = 0, yi, yc, nch = 0, nnoch = 0, near=0, noint=0, pi, ds, vi; int[] s = new int[10]; int[] nf = new int[ 9]; string[] sf = { "RTS","SBRF", "Si","GAZR","LKOH","VTBR","ROSN","GMKN","SBPR" }; int[] maxp = { 252000, 9300, 40000, 39000, 29000, 11000, 30000, 90000, 6000 }; int[] minp = { 45000, 1300, 20000, 9700, 9300, 1800, 9000, 10000, 600 }; byte y = b0, mon = 0, dat = 0, hr = 0, mnt = 0, sec = 0, o = 48, q=0, yn, mn, dn, b23=23, b59=59, b19=19, sp = 32, a = 42, hy = 45, po = 46, c = 44, co = 58, R = 82, T = 84, S = 83, B = 66, F = 70, G = 71, A = 65, Z = 90, L = 76, K = 75, O = 79, H = 72, V = 86, P = 80, N = 78, M = 77, bi = 105; DateTime dt = DateTime.Now; yi = dt.Year; if (yi > 2000) yi -= 2000; yn = (byte)yi; mn = (byte)dt.Month; dn = (byte)dt.Day; yi = yn << 8; yi += mn; yi <<= 8; yi += dn; WebClient user = new WebClient(); // цикл по дате string uri = "http://ftp.rtsnet.ru/pub/FORTS/pubstat/20100901/fut_deal.dbf"; try { Console.WriteLine("побайтное чтение файла " + uri); f = user.DownloadData(uri); } catch (WebException exc) { Console.WriteLine(exc); } catch (NotSupportedException exc) { Console.WriteLine(exc); } Console.WriteLine("чтение закончилось"); /* f[b]; собственно заголовок b=0-31 b=04 4 m=RecordsCount Количество записей в таблице Все b=08 2 h=HeaderSize Размер заголовка в байтах Все b=10 2 l=RecordSize Размер записи в байтах Все b=16 + начало описания n-го поля 1 Byte s[n] - Размер поля см. Таблицу 4 Все n - число полей (столбцов) */ m = (((((f[4] << 8) + f[5]) << 8) + f[6]) << 8) + f[7]; h = (f[8] << 8) + f[9]; l = (f[10] << 8) + f[11]; n = (h - 33) / 32; last = h + m * l; leng = f.Length; if (last + 1 != leng) Console.WriteLine("Внимание!!! last=" + last + ", а f.Length=" + leng); s[0] = 1; for (; j <= n; j++, k += 32) { s[j] = f[k]; sn += s[j]; } s2 = s[1] + s[2]; s4 = s2 + s[3] + s[4]; s5 = s4 + s[5]; // запись в файл всех переменных и байтов заголовка if (sn != l || f[h - 1] != (byte)13 || f[last] != (byte)26) { Console.WriteLine("Заголовок " + uri + " или записи - испорчены!!!"); return; } //goto save; вместо return if (y == b0) { j1 = h + s[1] - 7; dat = B2(j1); if (dat == del || f[j1 + 2] != po) return; if (dat > (byte)31 || dat < (byte)1) { Console.WriteLine("дата=", +dat + "байт №" + j1); return; } mon = B2(j1 + 3); if (mon == del || f[j1 + 5] != po) return; if (mon > (byte)12 || mon < (byte)1) { Console.WriteLine("месяц=", +mon + "байт №" + (j1 + 3)); return; } y = B2(j1 + 6); if (y == del) return; if (y > (byte)12 || y < (byte)8) { Console.WriteLine("месяц=", +mon + "байт №" + (j1 + 3)); return; } yc = (((y << 8) + mon) << 8) + dat; if (yc > yi) { Console.WriteLine("дата ещё не наступила, байт №" + j1); return; } y -= (byte)8; mon--; dat--; j2 = j1 + 8; hr = B2(j2); if (hr == del || f[j2 + 2] != co) return; if (hr > b23) { Console.WriteLine("час=", +hr + "в байте №" + j2); return; } mnt = B2(j2 + 3); if (mnt == del || f[j2 + 5] != co) return; sec = B2(j2 + 6); if (sec == del) return; } for (k = h; k < last; k += l) { if (f[k] != sp || f[k] != a) { Console.WriteLine("Испорчен флаг удаления uri=" + uri + " байт №" + k); return; }//goto save; j = k + s[1] - 7; if (f[j] != f[j1] || f[j + 1] != f[j1 + 1]) { dat = B2(j); if (dat == del || f[j + 2] != po) return; if (dat > (byte)31 || dat < (byte)1) { Console.WriteLine("дата=", +dat + "байт №" + j); return; } mon = B2(j + 3); if (mon == del || f[j + 5] != po) return; if (mon > (byte)12 || mon < (byte)1) { Console.WriteLine("месяц=", +mon + "байт №" + (j + 3)); return; } y = B2(j + 6); if (y == del) return; if (y < (byte)8) { Console.WriteLine("месяц=", +mon + "байт №" + (j + 3)); return; } yc = (((y << 8) + mon) << 8) + dat; if (yc > yi) { Console.WriteLine("дата ещё не наступила, байт №" + j); return; } y -= (byte)8; mon--; dat--; j1 = j; } j += 14; ch = f[j + 1] != f[j2 + 7] || f[j] != f[j2 + 6] || f[j - 2] != f[j2 + 4] || f[j - 3] != f[j2 + 3] || f[j - 5] != f[j2 + 1] || f[j - 6] != f[j2]; if (ch) { nch++; hr = B2(j - 6); if (hr == del || f[j - 4] != co) return; if (hr > b23) { Console.WriteLine("час=", +hr + "в байте №" + (j - 6)); return; } mnt = B2(j - 3); if (mnt == del || f[j - 1] != co) return; sec = B2(j); if (sec == del) return; j2 = j; if (hr < b10) continue; hr -= b10; } else nnoch++; //DATE,D TIME,C,8 ISIN,C,25 PRICE,N,20,5 VOL,N,10,0 ID_DEAL,N,10,0 TYPE,N,1,0 //1 2 3 4 5 6 7 //последние п е р в ы е п о с л е д н и е // sp пробел; a *; hy -; po .; c ,; co :; b0 символ 0; b9 символ 9; b10 число 10; j = k + s2 + 1; o = b0; // 0-RTS 1-SBRF 2-Si 3-GAZR 4-LKOH 5-VTBR 6-ROSN 7-GMKR 8-SBPR if (f[j] == R) { if (f[j + 1] == T && f[j + 2] == S && f[j + 3] == hy) { o = 0; j += 4; } else if (f[j + 1] == O && f[j + 2] == S && f[j + 3] == N && f[j + 4] == hy) { o = 6; j += 5; } else continue; } else if (f[j] == S) { if (f[j + 1] == B && f[j + 4] == hy) if (f[j + 2] == R && f[j + 3] == F) { o = 1; j += 5; } else if (f[j + 2] == P && f[j + 3] == R) { o = 8; j += 5; } else continue; else if (f[j + 1] == bi && f[j + 2] == hy) { o = 2; j += 3; } else continue; } else if (f[j] == G && f[j + 3] == R && f[j + 4] == hy) if (f[j + 1] == A && f[j + 2] == Z) { o = 3; j += 5; } else if (f[j + 1] == M && f[j + 2] == K) { o = 7; j += 5; } else continue; else if (f[j] == L && f[j + 1] == K && f[j + 2] == O && f[j + 3] == H && f[j + 4] == hy) { o = 4; j += 5; } else if (f[j] == V && f[j + 1] == T && f[j + 2] == B && f[j + 3] == R && f[j + 4] == hy) { o = 5; j += 5; } else continue; if (o == b0) { Console.WriteLine("Ошибка в программе!!! o>8, т.е. нужного фьючерса нет, но на continue не попадает"); return; } if (f[j + 1] == po) { if (f[j + 4] == po || f[j + 3] == po) { Console.WriteLine("Другой формат даты исполнения фьючерса - байт №" + j); continue; } if (f[j + 4] != sp) { Console.WriteLine("Слишком длинная дата исполнения фьючерса - байт №" + j); continue; } if (f[j] < b0 || f[j] > b9) { Console.WriteLine("Нецифровой символ вместо месяца исполнения фьючерса - байт №" + j); return; } q = B2(j + 2); if (q < (byte)8 || q > yn + (byte)1) { Console.WriteLine("Ошибочный год исполнения фьючерса - байт №" + (j + 3)); return; } q = f[j]; q -= b0; if (q != (byte)3 && q != (byte)6 && q != (byte)9) { Console.WriteLine("Промежуточный месяц исполнения фьючерса - байт №" + j); continue; } } else { if (f[j + 2] != po) { Console.WriteLine("Нет точки в дате исполнения фьючерса - байт №" + j); return; } if (f[j + 5] == po || f[j + 4] == po) { near++; continue; } if (f[j + 5] != sp) { Console.WriteLine("Слишком длинная дата исполнения фьючерса - байт №" + j); continue; } q = B2(j + 3); if (q < (byte)8 || q > yn + (byte)1) { Console.WriteLine("Ошибочный год исполнения фьючерса - байт №" + (j + 4)); return; } q = B2(j); if (q == (byte)0 || q > (byte)12) { Console.WriteLine("Ошибочный месяц исполнения фьючерса - байт №" + j); return; } if (q != (byte)12 && q != (byte)3 && q != (byte)6 && q != (byte)9) { Console.WriteLine("Промежуточный месяц исполнения фьючерса - байт №" + j); continue; } } j0=k+s4; jb=j0-7; for (j = j0; j > jb; j--) { if (f[j] == c || f[j] == po) { noint++; goto cont_k; } if (f[j] == sp) break; if (f[j] < b0 || f[j] > b9) { Console.WriteLine("Нецифровой символ в цене фьючерса - байт №" + j); return; } } if (j == j0) { Console.WriteLine("Ошибка!!! Нет цены в конце её поля - байт №" + j); return; } pi = f[j0] - 48; ds = 10; for (jb = j0 - 1; jb > j; jb--) { pi += (f[jb] - 48) * ds; ds *= 10; } if (pi > maxp[o] || pi < minp[o]) { Console.WriteLine("Ошибка!!! Цена - вне диапазона - байт №" + jb); return; } j0 = k + s5; jb = j0 - 7; for (j = j0; j > jb; j--) { if (f[j] == sp) break; if (f[j] < b0 || f[j] > b9) { Console.WriteLine("Нецифровой символ в объёме" + j); return; } } if (j == j0) { Console.WriteLine("Ошибка!!! Нет объёма в конце его поля - байт №" + j); return; } vi = f[j0] - 48; ds = 10; for (jb = j0 - 1; jb > j; jb--) { vi += (f[jb] - 48) * ds; ds *= 10; } if (vi == 0) {Console.WriteLine("Ошибка!!! Нулевой объём, o=" + o + "байт №" + jb); return; } if (vi > 65535) { vi = 65535; Console.WriteLine("Объём > 65535 o=" + o + "байт №" + jb); } nf[o]++; p[i] = pi; v0[i] = (ushort)vi; if (ch) { t[y, mon, dat, hr, mnt, sec] = i; ch = false; } o <<= 4; o += q; fut[i] = o; i++; cont_k:;} for (j=0; j <= n; j++) Console.WriteLine("s[" + j + "]=" + s[j]); Console.WriteLine("m=" + m + " i=" + i + " nch=" + nch + " nnoch=" + nnoch + " near" + near + " noint=" + noint); // конец цикла по датам // чтение не существующего файла uri = "http://ftp.rtsnet.ru/pub/FORTS/pubstat/20100828/fut_deal.dbf"; try { Console.WriteLine("побайтное чтение файла " + uri); f = user.DownloadData(uri); } catch (WebException exc) { Console.WriteLine(exc); } catch (NotSupportedException exc) { Console.WriteLine(exc); } Console.WriteLine("чтение закончилось"); for (j = 0; j < 9; j++) Console.WriteLine(sf[j] + "- " + nf[j]); dialog: Console.WriteLine("час :"); hr = Convert.ToByte(Console.ReadLine()); if (hr > b23) { Console.WriteLine("час > 23"); goto dialog; } if (hr > b19) { mon = 7; dat = 30; } hr -= b10; dm: Console.WriteLine("минута :"); mnt = Convert.ToByte(Console.ReadLine()); if (mnt > b59) { Console.WriteLine("минута > 59"); goto dm; } sm: Console.WriteLine("секунда :"); sec = Convert.ToByte(Console.ReadLine()); if (sec > b59) { Console.WriteLine("секунда > 59"); goto sm; } k = t[y, mon, dat, hr, mnt, sec]; if(k==(byte)0) {Console.WriteLine("на этой секунде не было тиков"); goto sm;} for (n = sec + 1; n < 60; n++) { j = t[y, mon, dat, hr, mnt, n]; if (j > k) goto end; } if (mnt >= b59) { if (h >= b23) j = k; else {sec = 0; mnt = 0; hr++; j = t[y, mon, dat, hr, mnt, sec];} } else { mnt++; sec = 0; } end: for (i = k; i <= j; i++) { o = fut[i]; q=o; o >>= 4; q <<= 4; q >>= 4; Console.WriteLine(sf[o] + "-" + q + "." + (y + 8) + " p=" + p[i] + " v=" + v0[i]);} goto dialog; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д