Как добавить методу четыре параметра и изменять данные в параметрах при нажатии разных кнопок? - C#
Формулировка задачи:
Как добавить методу что ниже, четыре параметра и изменять данные в параметрах при нажатии разных кнопок?
Например:
1) При нажатии 1-ой кнопки в строке
Можно в других строках также задавать параметры?
2) Например: При нажатии 1-ой кнопки в строке
Листинг программы
- unsafe void PatchFilesLevel5()
- {
- long[] offsets = { 0x111, 0x111 + 0xB8, 0x111 + 0x170 }; /* здесь нужно
- делать замену смещений при нажатии разных кнопок*/
- byte[] buf4 = new byte[4];
- decimal mulitplyBy = numericUpDown111.Value; /* здесь нужно
- делать замену ипользуемого numericUpDown при разных кнопках*/
- foreach (string fileName in Directory.EnumerateFiles(Application.StartupPath + @"\unpacked2", "scene*"))
- {
- Match m = Regex.Match(Path.GetFileName(fileName), @"^scene(\d+)$");
- if (m.Success)
- {
- int p = int.Parse(m.Groups[1].Value);
- if ((p >= 9 && p <= 11) || p == 12 || p == 14) /*здесь, если вообще можно,
- делать замену ипользуемых ((p >= 9 && p <= 11) || p == 12 || p == 14) при разных кнопках*/
- {
- using (var fstream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
- {
- foreach (long offset in offsets)
- {
- if (offset + 4 < fstream.Length)
- {
- fstream.Position = offset;
- fstream.Read(buf4, 0, 4);
- int n = (int)(mulitplyBy * BitConverter.ToInt32(buf4, 0)); /* здесь нужно
- делать замену формулы при нажатии разных кнопок (например при 1-ой кнопке одна формула:
- (int)(mulitplyBy * BitConverter.ToInt32(buf4, 0)); при 2-ой кнопке формула меняется */
- if (n > 99)
- {
- n = 99;
- }
- fixed (byte* b = buf4)
- {
- *((int*)b) = n;
- }
- fstream.Position -= 4;
- fstream.Write(buf4, 0, 4);
- }
- }
- }
- }
- }
- }
- }
long[] offsets = { 0x111, 0x111 + 0xB8, 0x111 + 0x170 };
нужно чтоб использовались смещения: { 0x111, 0x111 + 0xB8, 0x111 + 0x170 }); При нажатии 2-ой кнопки чтоб в строке использовались смещения: { 0x222, 0x222 + 0xB8, 0x222 + 0x170 };
Обьяснили как сделать. Можно добавить методу PatchFilesLevel5
параметр offsets типа long unsafe void PatchFilesLevel5(long[] offsets)
а в метод нажимаемой кнопки в виде аргумента задавать смещения:
Листинг программы
- buttonPatch1_Click(object sender, EventArgs e)
- {
- PatchFilesLevel5(new long[]{ 0x111, 0x111 + 0xB8, 0x111 + 0x170 });
- }
decimal mulitplyBy = numericUpDown111.Value;
нужно чтоб использовался numericUpDown111.Value. При нажатии 2-ой кнопки используется numericUpDown222.Value. Меняется используемый numericUpDown.
3) Например: При 1-ой кнопке в строке int n = (int)(mulitplyBy * BitConverter.ToInt32(buf4, 0));
нужно чтоб использовалась одна формула: (int)(mulitplyBy * BitConverter.ToInt32(buf4, 0)); При 2-ой кнопке формула меняется например на (int)(mulitplyBy * BitConverter.ToInt32(buf4, 0)/100); .
4) (Если это возможно сделать) Например: При 1-ой кнопке в строке if ((p >= 9 && p <= 11) || p == 12 || p == 14)
нужно чтоб использовались: ((p >= 9 && p <= 11) || p == 12 || p == 14) При 2-ой кнопке например: ((p >= 5 && p <= 20) || p == 50). Решение задачи: «Как добавить методу четыре параметра и изменять данные в параметрах при нажатии разных кнопок?»
textual
Листинг программы
- unsafe void PatchFilesLevel5(long[] offsets, Func<int,bool> fileSelector, Func<int,int> intConverter)
- {
- byte[] buf4 = new byte[4];
- foreach (string fileName in Directory.EnumerateFiles(Application.StartupPath + @"\unpacked2", "scene*"))
- {
- Match m = Regex.Match(Path.GetFileName(fileName), @"^scene(\d+)$");
- if (m.Success)
- {
- int p = int.Parse(m.Groups[1].Value);
- if (fileSelector(p))
- {
- using (var fstream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
- {
- foreach (long offset in offsets)
- {
- if (offset + 4 < fstream.Length)
- {
- fstream.Position = offset;
- fstream.Read(buf4, 0, 4);
- int n = intConverter(BitConverter.ToInt32(buf4, 0));
- if (n > 99)
- {
- n = 99;
- }
- fixed (byte* b = buf4)
- {
- *((int*)b) = n;
- }
- fstream.Position -= 4;
- fstream.Write(buf4, 0, 4);
- }
- }
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д