Jelző program használata játék .txt logfájljának alapján
2020-03-04T13:02:49+01:00
2020-03-04T15:48:07+01:00
2022-08-11T18:30:31+02:00
flash12
Sziasztok!

Szeretnék írni egy programot, melynek lényege egy játék log fájlján alapuló jelzés lenne, amennyiben a logban megtalálható egy bizonyos sor/karakter.
Pár hónapja sikerült eljutnom addig, hogy OpenFileDialoggal be tudjam tallózni magát a mappát, amiben megtalálható a txt fájl, majd mellé egy hangot, és bizonyos szövegeknél működött is. Viszont, mikor szerettem volna lecserélni a szöveget karakterekre, elakadtam.

Amint megnyomom az "Indítás" gombot, elindul egy timer, lent látható a funkciója.

private void timer1_Tick(object sender, EventArgs e) { if (File.Exists(Form1.dirLocation + "\console2.log")) { File.Delete(Form1.dirLocation + "\console2.log"); File.Copy(Form1.dirLocation + "\console.log", Form1.dirLocation + "\console2.log", true); } else File.Copy(Form1.dirLocation + "\console.log", Form1.dirLocation + "\console2.log", true); StreamReader streamReader = new StreamReader(Form1.dirLocation + "\console2.log"); while (!streamReader.EndOfStream) Form1.newPM = streamReader.ReadLine(); streamReader.Close(); if (Form1.newPM != Form1.lastPM) { Form1.splitedText = Form1.newPM.Split(' '); if (Form1.splitedText.Length <= 1 || !(splitedText[4] == "((")) return; Form1.lastPM = Form1.newPM; if (Form1.soundPath != "") this.soundPlay(1); else this.soundPlay(2); } else Form1.newPM = ""; }
A programnak ez a fő szerepe, a többi már csak design és a fájl/jelző hang betallózására szolgál.
Főleg a "((" karakterek megjelenésekor szeretném ha jelezne a program, de nem tudom hogyan kellene megcsinálnom, hogy működjön. 
Köszönöm szépen a segítségeket előre is!
Mutasd a teljes hozzászólást!
Ez kicsivel szebb:

string[] words = { "((", "abc", "xyz" }; if (File.Exists(Form1.dirLocation + "\console2.log")) File.Delete(Form1.dirLocation + "\console2.log"); File.Copy(Form1.dirLocation + "\console.log", Form1.dirLocation + "\console2.log", true); using (StreamReader streamReader = new StreamReader(Form1.dirLocation + "\console2.log")) { while (!streamReader.EndOfStream) Form1.newPM = streamReader.ReadLine(); } if (Form1.newPM != Form1.lastPM) { if (words.Any(Form1.newPM.Contains)) { Form1.lastPM = Form1.newPM; if (Form1.soundPath != "") this.soundPlay(1); else this.soundPlay(2); } } else Form1.newPM = "";
A words tömbbe tedd azokat a szövegrészeket, amikre keresni akarsz. Akkor nem kell az if-ben felsorolni...


Itt többféle megoldást is találsz
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd