Anonymní profil kojor44 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil kojor44 – Programujte.comAnonymní profil kojor44 – Programujte.com

 

Příspěvky odeslané z IP adresy 94.74.242.–

kocourek
.NET › Přesné předání pozice v stre…
29. 7. 2016   #212152

 Čaues,

mám dotaz, co mám v tomto kódu změnit, aby to nečetlo pozici podle bytů, ale podle znaků? Pozice předaná se neshoduje přesně s pozicí získanou, protože čte po bytech.

Díky moc

        private void timer1_Tick(object sender, EventArgs e)
        {
            FileStream fw = new FileStream(@"log.txt", FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
            StreamWriter writer = new StreamWriter(fw);
            //fw.Seek(logpos, SeekOrigin.Begin);

            //009 
            try
            {
                // cteni pokerstars.log.0 a zapisovani do log.txt
                FileStream fr = new FileStream(pathlogfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamReader reader = new StreamReader(fr);

                //nastaveni pozice
                fr.Seek(pspos, SeekOrigin.Begin);

                //prvni cyklus; cte radky z pokerstars.log.0, ktere se maji vytahnout do log.txt
                //******************************************************************* 1. CYKLUS ********************************************************************
                while (reader.EndOfStream == false)
                {
                    string text = reader.ReadLine();
                    lenstring += text.Length;
                    if (text.Contains("MSG_0x0009-T"))
                    {
                        string cardtemp = text;
                        text = reader.ReadLine();
                        //  iffirst:
                        if (text.Contains("::: "))
                        {
                            string cardtemp1 = text;
                            text = reader.ReadLine();
                            lenstring += text.Length;
                            //  ifsecond:
                            if (text.Contains("::: "))
                            {
                                i++;
                                string cardtemp2 = text;
                                writer.WriteLine(i + " " + cardtemp + " " +
                                    cardtemp1 + " " + cardtemp2);
                                listBox1.Items.Add(i + " " + cardtemp + " " +
                                    cardtemp1 + " " + cardtemp2);
                                cislo1 = cardtemp.Split(' ');                              
                                break;
                            }
                            else
                            {
                                text = reader.ReadLine();
                                lenstring += text.Length;
                                //   goto ifsecond;
                            }
                        }
                        else
                        {
                            text = reader.ReadLine();
                            lenstring += text.Length;
                            // goto iffirst;
                        }
                    }
                }
                //******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEZAPÍŠE PŘESNĚ
                pspos = reader.BaseStream.Position;
                //******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEZAPÍŠE PŘESNĚ

                reader.Close();
                fr.Close();
            }
            catch (Exception ex)
            {
                listBox1.Items.Add("***009*** " + ex.Message);
            }

            //007
            bool ok = false;
            int tiktak = 0;

            while (ok == false && tiktak < 100)
            {
                try
                {
                   
                    FileStream fr2 = new FileStream(pathlogfile, FileMode.Open,
                        FileAccess.Read, FileShare.ReadWrite);
                    StreamReader reader2 = new StreamReader(fr2);


                    //******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEPŘEDÁ PŘESNĚ
                    fr2.Seek(pspos, SeekOrigin.Begin);
                    //******* TADY VZNIKÁ PROBLÉM, PROTOŽE SE POZICE NEPŘEDÁ PŘESNĚ

                    pspos1 = fr2.Position;

                    while (reader2.EndOfStream == false)
                    {
                        string text = reader2.ReadLine();
                        cislo2 = text.Split(' ');

                        if (text.Contains("MSG_0x0007-T") && text.Contains(cislo1[2]))
                        {
                            string stacktemp = text;
                            text = reader2.ReadLine();
                            if (text.Contains("'F'") || text.Contains("'w'"))
                            {
                                string stacktemp1 = text;
                                text = reader2.ReadLine();
                                if (text.Contains("'C'") || text.Contains("'c'") ||
                                    text.Contains("'W'"))
                                {
                                    string stacktemp2 = text;
                                    text = reader2.ReadLine();
                                    if (text.Contains("'*'"))
                                    {
                                        string stacktemp3 = text;
                                        writer.WriteLine(i + " " + stacktemp + " " +
                                            stacktemp1 + " " + stacktemp2 + " " + stacktemp3);
                                        listBox1.Items.Add(i + " " + stacktemp + " " + 
                                            stacktemp1 + " " + stacktemp2 + " " + stacktemp3);

                                        ok = true;
                                        break;
                                    }
                                    else
                                    {
                                        writer.WriteLine(i + " " + stacktemp + " " +
                                            stacktemp1 + " " + stacktemp2);
                                        listBox1.Items.Add(i + " " + stacktemp + " " +
                                            stacktemp1 + " " + stacktemp2);

                                        ok = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    reader2.Close();
                    fr2.Close();
                }


                catch (Exception ex)
                {
                    listBox1.Items.Add("***007*** " + ex.Message);
                }

                if(ok == false)
                {
                    System.Threading.Thread.Sleep(20);
                    tiktak++;
                }

            }
            
            //logpos = fw.Position;
            writer.Close();
            fw.Close();

            //druhy cyklus asociuje s promennymi veskera potrebna data z log.txt
            //*********************************** 2. CYKLUS *******************
kojor44
C / C++ › nefunkční switch?
18. 7. 2016   #212017

#5 kojor44
naprosto netuším kde se tam ten středník vzal... :)

kojor44
C / C++ › nefunkční switch?
18. 7. 2016   #212016

3 hodiny u toho sedím a říkám si, jestli jsem debil nebo ne :D

chyba byla samozřejmě v tom středníku :D

tohle je jen zjednodušená verze toho co dělám, jinak to je samozřejmě ošetřeno.

Díky

kojor44
C / C++ › nefunkční switch?
18. 7. 2016   #212012

   

#include <iostream>
using namespace std;

int main ()
{
	int volba;
	cin >> volba;
	while (volba != 3);
	{
		switch (volba)
		{
		case 1: cout << "XXXX";
				break; 

		case 2: cout << "ZZZZ";
				break;

		default:
				cout << "toto neni volba";
		}
		
		cin >> volba;
	}
	cout << "KONEC";
}

po zadani 3, vyskoci "toto neni volba" a pri zadani jineho cisla nedela nic a jakoby zamrzne...

GAMA
.NET › Parser, psy a kočky... HELP
14. 7. 2016   #211965

Vyřešil jsem to tak, že jsem se vykašlal na pozice a vždycky vymazal celej log po tom cyklu  [:-)]

GAMA
.NET › Parser, psy a kočky... HELP
14. 7. 2016   #211964

Vyřešeno tímto kódem...

díky moc, za všechny odpovědi :)

potřebuji ještě vyřešit, jak udělat, aby si pamatoval "přesnou" pozici kde skončil se četním v logu???

FileStream logs = new FileStream("log.txt", FileMode.Open, FileAccess.ReadWrite);
            StreamReader reader1 = new StreamReader(logs);

            logs.Seek(logpos1, SeekOrigin.Begin);

            while (!reader1.EndOfStream)
            {
                lines.Add(reader1.ReadLine());
            }
            logpos1 = logs.Position;

Tohle nastavuje pozici někam na konec, ale určitě ne přesně, protože, když zkopíruju ten log a dám ho ještě jednou za původní tak to nepřečte vůbec první 4 kočky u toho vložení a je tam problém s tím, že když dám, aby to ukazovalo pozici po každým přečteným řádku,tak opět první řádek má už hodnotu 1024 a 8x za sebou, a pořád to jde po 1024, potom 2048 apod...  [:(]

Někde jsem četl, že se to nemá vůbec používat , pokud nechci ztratit data... seek a position  [:(]

GAMA
.NET › Parser, psy a kočky... HELP
11. 7. 2016   #211861

Super!!! Díky moc! :)

Ted nejsem doma tak napíšu až budu doma a vyzkouším :-)

GAMA
.NET › Parser, psy a kočky... HELP
11. 7. 2016   #211843

Tak už po 3 dnech dumání a myslení si, že je moje logika uplne v haji vím čím to je..** Je to tím, že mi pos009 = fr1.Position zobrazuje jen násobky 1024**, takže pozice nefungují, neví někdo jak to vyřešit?

pozice hned prvního řádku je 1024 a potom po 10ti kočkách je už 2048 a tak dále... Jestli mi někdo pomůže vyřešit tohle tak si s tím parserem už poradím  [:-)]  Když jsem vracel pozici, tak to samozřejmě vrátilo na úplnej nesmysl, kterej byl někde v intervalu 1024.

To by bylo abych neuměl vyhledat kočku, potom příslušnýho psa, vrátit pozici a znovu  [:-)]

Díky moc!!!

GAMA
.NET › Parser, psy a kočky... HELP
10. 7. 2016   #211842

Ahoj,

mám problém s parserem, jde o vytáhnutí dat asi z 50k řádků za hodinu (log). Potřebuji to v live streamu, což už všechno mám mám už dokonce i analýzu, ale problém je, že mám vzorek 50k řádků a na něm je přesně 277 koček, mě se podařilo vytáhnout jen 263. Popíšu problém.

Dám příklad, jak data vypadají

kočka 22 -> data ktery chci vytahnout //to už mám všechno napsaný správně
pes 22 -> data
pes 22 -> data
pes 22 -> data
kočka 47 -> data
pes 47 -> data
pes 47 - > data

koček je přesnej počet 277 a ke každé kočce potřebuji přiřadit a předat třídě prvního psa pod stejným číslem.

kocka 22
pes 22
kocka 47
pes 47

Problém je, že někdy jsou data např. takhle
kocka 55
kocka 57
pes 57
pes 55
pes 55
pes 57
a takhle třeba náhodně
Ale vždy je pes po kočce.

A někdy výjimečně se stane, že chybí pes, takže kočka je, ale nemá se s čím sparovat. To ale nevadí.

Mám to pres FileStream, ale nechapu, že to nevrací x = název.position, nazev.seek (x, orig. begin) takové jaké předávám.
Mám dva parsery, první vytahuje kočky a psy z logfile a další ten, se kterým se teď trápím a který popisuji z nich dělá to co potřebuji...

 NEVŠÍMEJTE SI VŮBEC TECH PARSOVACICH METOD (ty jsou všechny spávně) JEN PODMÍNEK A VRACENÍ POZICE
Takže potřebuji prostě, aby to vzalo všech 277 koček a k nim přiřadilo prvního psa se stejným číslem  [:-)]
Někdy můžou být i např 3 kočky pod sebou  :( Jsem z toho zoufalej...

FileStream fr1 = new FileStream("log.txt", FileMode.Open, FileAccess.ReadWrite);
StreamReader reader1 = new StreamReader(fr1);

string text1;
string[] textarr = { };
string[] textarr1 = { };
string[] textarr2 = { };

bool ToF = false;

while (reader1.EndOfStream == false)
{
    if (ToF == true)
    {
        fr1.Seek(pos009, SeekOrigin.Begin);
        ToF = false;
    }

    text1 = reader1.ReadLine();

    if (text1.Contains("kocka"))
    {
        textarr = text1.Split(' ');
        x++;
        o++;
        IDc[x] = textarr[4];
        card1[x] = textarr[6];
        card2[x] = textarr[8];
        if ((textarr[6].EndsWith("s") == textarr[8].EndsWith("s")) && (textarr[6].EndsWith("d") == textarr[8].EndsWith("d"))
            && (textarr[6].EndsWith("h") == textarr[8].EndsWith("h")) && (textarr[6].EndsWith("c") == textarr[8].EndsWith("c")))
            suited[x] = true;
        else
            suited[x] = false;
        listBox2.Items.Add(x + "\t" + textarr[2] + "\t" + textarr[4] + "\t" + textarr[6] + " " + textarr[8] + "\t" + suited[x]);


        text1 = reader1.ReadLine();
        while (reader1.EndOfStream == false)
        {
            if (text1.Contains("pes") && text1.Contains(textarr[4]))
            {
                textarr1 = text1.Split(' ');
                if (string.Equals(textarr1[9], "'W'"))
                {
                    listBox2.Items.Add(x + "\t" + textarr1[2] + "\t" + textarr[4] + "\t" + "noaction");
                    stav[x] = 0;
                    IDs[x] = textarr1[4];
                }
                else if (text1.Contains("'*'"))
                {
                    textarr1[16] = textarr1[16].Remove(textarr1[16].Length - 1);
                    textarr1[15] = textarr1[15].Remove(textarr1[15].Length - 1);
                    listBox2.Items.Add(x + "\t" + textarr1[2] + "\t" + textarr[4] + "\t" + textarr1[15] + ", " + textarr1[16]);
                    stav[x] = 1;
                    IDs[x] = textarr1[4];
                    stack[x] = int.Parse(textarr1[15]);
                    bb[x] = int.Parse(textarr1[16]);
                }
                else
                {
                    listBox2.Items.Add(x + "\t" + textarr1[2] + "\t" + textarr[4] + "\t" + textarr1[10]);
                    stav[x] = 2;
                    tocall[x] = int.Parse(textarr1[10]);
                    bb[x] = bb[x - 1];
                }
                break;
            }
            else if (text1.Contains("kocka"))
            {
                pos009 = fr1.Position - text1.Length;   //chyba 1. tuhletu pozici to nastavi nekam uplne do hoven asi o 15 radku pod onoho psa, od kteryho potebuji zacit nasledujíci cyklus

                listBox2.Items.Add(pos009 + " " + text1);
                text1 = reader1.ReadLine();
                ToF = true;
            }
            else
            {

                text1 = reader1.ReadLine();

                //tady potřebuji, aby to sem skočilo třeba když tam nebude žádnej pes, kterej by se mohl sparovat a přeskočilo ho to...
            // program zastavi přidávání psů jakmile narazí na kocku, která nemá psa
            //protože ho to hledá tak dlouho, dokud není na eof, což je samozřejmě špatně
            }
        }

        m = 0;
    }
}
.NET › jak parsovat logfile v live…
5. 6. 2016   #211190

Díky!!! Moc jste mi pomohli... vyřešil jsem to už :-)

.NET › jak parsovat logfile v live…
3. 6. 2016   #211142

No, jsem z veškerých těch tříd sharpu celkem jelen, dělám C++ a tam je  pár tříd a každá má pár funkcí, zbytek si musí člověk napsat, tady je tam 100 tříd a každá má mnohem víc metod.

 Díky za tip se stringama...

No nicméně nevím jak to implementovat do mýho softu ten filesystemwatcher (je to celkem složitá podtřída, teda alespon mi to tak přijde) :( co mám tedy změnit v tom základním schématu... stále potřebuji docílit toho, aby se mi streamovaly listboxy (první while zaplní první listbox datama, se kteryma chci pracovat a druhej už zaplní druhej listbox datama (promennyma) se kteryma budu dale pracovat v softwaru) (takhle to funguje jen na tlačítko button1 :D a ještě se to načítá všechno od začátku, což je nemyslitelné, aby se načítalo vždy např. milion řádků :-) ).. Vím, že ten tip s tím filesystemwatcherem bude určitě dobrej, jen nevím jak udělat to aby to fungovalo tak jak má :-)

NEED HELP :-)

díky moc za každej tip.

.NET › jak parsovat logfile v live…
3. 6. 2016   #211135

Čau,

potřebuju pomoc při streamovani logfile (jakmile se neco přičte okamžitě by to mělo být vidět na textboxu), zatím to mám na jedno tlačítko a dva textboxy a vypadá to nějak takto, je mi jasné, že tohle nebude live streamování s podmínkama u while(). Jsem zatím zelenac v C#.

Takže co potřebuji, log file má asi 25k řádků za hodinu. Tudíž potřebuji aby běžel ten parser v live streamu (okamžitě jakmile se zmeni prvni log načítat do) nevím, jak to ale udělat zatím... :) díky moc :)

        private void button1_Click(object sender, EventArgs e)
        {
            string path = @"C:\\Users\\Marek Schwarz\\Desktop\\zakladni log.txt";
            string pathoff = @"C:\\Users\\Marek Schwarz\\Desktop\\log.txt";

            StreamReader reader = new StreamReader(path);
            StreamWriter writer = new StreamWriter(pathoff);

// promenne

            while (reader.EndOfStream == false)
            {
                //vytahne všechna data, se kterymi chci pracovat do textbooxu1 a log.txt
            }

//***********************************************************************************
            string path1 = @"C:\\Users\\Marek Schwarz\\Desktop\\log.txt";
            string pathoff1 = @"C:\\Users\\Marek Schwarz\\Desktop\\logfinal.txt";

            StreamReader reader1 = new StreamReader(path1);
            StreamWriter writer1 = new StreamWriter(pathoff1);

        //promenne

            while (reader1.EndOfStream == false)
            {
                        // vyplní do spravnych promennych data, ktera jsem potřeboval, vyplni textbox2 a logfinal.txt
            }
            writer.Close();
            reader.Close();
            writer1.Close();
            reader1.Close();
        }
MadmaX
C / C++ › 4 problémy s mým programem
31. 5. 2016   #211035

když si to uvědomuji, tak by to bylo nejlepší udělat v sharpu, protože to stejně budu chtít dát do WPF :D

MadmaX
C / C++ › 4 problémy s mým programem
31. 5. 2016   #211034

#10 MadmaX
zrovna jsem bohužel vybral handy, kde nejsou údaje pro bb, který to nechává z předchozí handy v těchto příadech :) ale to je jedno :-)

MadmaX
C / C++ › 4 problémy s mým programem
31. 5. 2016   #211033

Část mého logu

https://ulozto.cz/x74FmVUi/log-file-txt

MadmaX
C / C++ › 4 problémy s mým programem
31. 5. 2016   #211027

 tohle jsem zatím vytvořil :-)

//program má načítat ve streamu (LIVE) handy z PokerStars...
//vychází z log file.
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main ()
{
	ifstream file;
	file.open("C:\\Users\\Marek Schwarz\\Desktop\\PokerStars.log.0");
	
	string search0 = "MSG_0x0009-T";
	string search1 = "MSG_0x0007-T";
	string bazal = "TableAnimation::dealPlayerCards";
	//nedulezite promenne
	string find0, find1, air, air1;
	//dulezite promenne
	int stack, bb, tocall; 
	string karta0, karta1, ID;
	string pomlcky = "------";
	string hvezdicky = "'*'";
	string sipka = "<-";
	int i = 0;

while(file.good())
  {         			
	file >> air;
	if (air == bazal){		//vstupní podmínka, program má načítat ve streamu handy z pokerstars
		cout <<"Game no. ";	// počet string bazal = "TableAnimation::dealPlayerCards" se rovná reélnému počtu hand odehraných
		   				
		while (air != search0){				//kdyz se air nerovná MSG_0x0009-T, pustí to do cyklu
			file >> air;					//tyto podmínky načítají karty
			while(air == search0){
				file >> ID >> find0 >> find0; 
				
				if (find0 == pomlcky){
					while(air == search0){
						file >> air;
						while(air == search0){
							file >> find0 >> find0 >> find0;
							file >> karta0 >> find0 >> karta1;
							cout << ++i << ", ID " << ID << " holecards " << karta0 << karta1 ;						
						}	
					}
					break;
				}
				else{
				file >> karta0 >> find0 >> karta1;
				cout << ++i << ", ID " << ID << ", holecards " << karta0 << karta1 ;
				}
				break;
			}
	   }
	
		while (air != search1){			//kdyz se air nerovná MSG_0x0007-T, pustí to do cyklu
			file >> air;				////tyto podmínky načítají bb a stack
			while(air == search1){
				file >> find1 >> find1 >> find1 >> find1 >> find1 >> tocall >> find1;
				if(find1 == hvezdicky){
					file >> find1 >> find1 >> stack >> find1 >> bb;
					cout <<  ", stack " << stack << ", bb " << bb << endl;
					break;
				}
				else if(find1 == sipka){
						if (tocall < 1000){
							cout << ", tocall ";
							cout << tocall << ", bb " << bb << endl;
							break;
						}
						else{
							cout << ", without action\n";
							break;
						}
				}
			}
			
	   }	

	}
}

return 0;
}
MadmaX
C / C++ › 4 problémy s mým programem
31. 5. 2016   #211026

To chápu, klidně bych za to nabídl i peníze, kdyby mi to někdo udělal, ale bohužel nemohu, kdyby se k PokerStars donesl můj log file s tím, že se snažím něco naprogramovat, tak bych měl okamžitě zmražený účet.

Poslední problém, který s tím mám je, že když hraji jen jeden stůl, tak to načítá vše 100% správně, ale jakmile hraji více stolů, nastává problém, když se rozdají karty na obou stolech v časovém intervalu cca 2 vteřiny. Samozřejmě je např. 2x string bazal = "TableAnimation::dealPlayerCards"; pod sebou a poté to načte jen jeden string search0 = "MSG_0x0009-T" a string search1 = "MSG_0x0007-T"; a ještě třeba rozhozeně, určitě by to byla pro někoho otázka 20 minut, jak to udělat, protože ty zprávy vypadají takhle (tučné jsou potřebné udaje k vytažení):

-> MSG_0x0009-T 2053523761 00080EFG
::: 10d
::: 8c

-> MSG_0x0007-T 2053523761 00080EFG
 'F' 65536
 'C' 20
 '*' 'E' 60, 500, 20, 1

nebo

-> MSG_0x0007-T 2053523761 00080EFG
 'F' 65536
 'C' 470

s tím, že ty čísla za MSG např. 2053523761 00080EFG značí vždy jeden stůl, kdyby byla jiná, tak to znamená, že je to jiný stůl

takže struktura při hraní jednoho stolu je standartní:

TableAnimation::dealPlayerCards

poté hned první  > MSG_0x0009-T, kde jsou pod tím karty za těma :::

poté hned další -> MSG_0x0007-T, odkud načtu velikosti stacků a velikost bigblindu, popř. výši callu, z čehož si mohu dopočítat stacky a bb.

Problémem je když zapnu dva a více stolů, poté je struktura logu špatná (dá se to obejít, tak, že budu vždy čekat a snažit se aby se nerozvávali karty na dvou stolech současně):

TableAnimation::dealPlayerCards //1

nepotřebný msg např. > MSG_0x0005-T, > MSG_0x0024-T, apod...

poté hned první  > MSG_0x0009-T, //1

a poté přijde např. další TableAnimation::dealPlayerCards //2 a pod tím poté hned druhy > MSG_0x0009-T, //2

a nyní třeba > MSG_0x0007-T od //1

Takže můj script načte TableAnimation::dealPlayerCards, a nyní hledá MSG_0x0009-T a poté  MSG_0x0007-T a přitom přeskočí druhý TableAnimation::dealPlayerCards a je to špatně...

Kdo mi s tímto pomůže, tak mu letí 500,- Kč na účet. :-)

MadmaX
C / C++ › 4 problémy s mým programem
30. 5. 2016   #211005

Tak díky moc za všechny rady... Už to mám, nenačetlo mi to sice 12 hand z 279, ale to není moc velká ztráta, i když vůbec nechápu, proč úplně zmizely ve výstupu...

Teď už potřebuji jen, aby to jelo ve streamu a to nechápu jak to udělat... Když dám podmínku, aby to neukončovalo eof a aby se to stále načítalo, zkopíruju polovinu toho textáku na konec a uložím, tak to samozřejmě nenačte nic... tak to něják stále otvírat a pamatovat si číslo řádku na kterým to skončilo nebo nevím :-))

MadmaX
C / C++ › 4 problémy s mým programem
30. 5. 2016   #210994

   

//program má načítat ve streamu (LIVE) handy z PokerStars...
//vychází z log file.
//nejsem programátor, ale stále se učím! :-))
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>

using namespace std;

int main ()
{
	ifstream file;
	file.open("C:\\Users\\Marek Schwarz\\Desktop\\PokerStars.log.0");
	
	//NEJLÉPE, ABY TO OTEVÍRALO KOPII PRAVÉHO LOGU
	
	string search0 = "MSG_0x0009-T";
	string search1 = "MSG_0x0007-T";
	string bazal = "TableAnimation::dealPlayerCards";
	
	//nedulezite promenne
	string find0;
	string find1;
	string air; 
	
	//dulezite promenne
	string stack; //stack
	string bb; //bb
	string karta0; //hole find0
	string karta1; //hole find1
	string ID;
	
	string pomlcky = "------";
	string hvezdicky = "'*'";

	int lineCount;
	
		int i = 0;
		int c = 0;

while (!file.eof()){		//POTŘEBUJI UPRAVIT PODMÍNKU CYKLU, TAK ABY ...
while(file.good())			//VŽDY NAČETLO AKTUALIZOVANOU VERZI LOGU, ...
  {         				//LOG SE STÁLE DOPLŇUJE A POTŘEBUJI TO ...
	getline(file, air);		//AKTUALIZOVAT ZHRUBA 3x ZA VTEŘINU.
	++lineCount;
	
	if (air == bazal){		//vstupní podmínka, program má načítat ve streamu handy z pokerstars
		cout <<"Game no. ";	// počet string bazal = "TableAnimation::dealPlayerCards" se rovná reélnému počtu hand odehraných
		   				
		while (air != search0){				//kdyz se air nerovná MSG_0x0009-T, pustí to do cyklu
			file >> air;					//tyto podmínky načítají karty
			while(air == search0){
				file >> ID >> find0 >> find0; 
				
				if (find0 == pomlcky){
					while(air == search0){
						file >> air;
						while(air == search0){
							file >> find0 >> find0 >> find0;
							file >> karta0 >> find0 >> karta1;
							cout << ++i << ", ID " << ID << " holecards " << karta0 << karta1 ;						
						}	
					}
					break;
				}
								
				else{
				file >> karta0 >> find0 >> karta1;
				cout << ++i << ", ID " << ID << ", holecards " << karta0 << karta1 ;
				}
				break;
			}
	   }
	
		while (air != search1){			//kdyz se air nerovná MSG_0x0007-T, pustí to do cyklu
			file >> air;				////tyto podmínky načítají bb a stack
			while(air == search1){
				file >> find1 >> find1 >> find1 >> find1 >> find1 >> find1 >> find1;
				if(find1 == hvezdicky){
					file >> find1 >> find1 >> stack >> bb;
					cout <<  ", stack " << stack << ", bb " << bb << ", Radek " << lineCount << endl;
					break;
				}
				else{
					cout <<  ", stack NENACTEN " << ++c << ", bb " << 0 << ", Radek " << lineCount << endl;
					break;
					// TADY BYCH POTŘEBOVAL, ABY TO ZAČALO VYHLEDÁVAT SMĚREM NAHORU (což asi není možné)...
					// A NAŠLO PRVNÍ string hvezdicky = "'*'", POTÉ BYCH SI UŽ PORADIL, A JESTLI BY TO NEBYLO...
					// MOŽNÉ, TAK ABY TO NAČETLO PŘEDCHOZÍ lineCount A POTÉ HLEDALO V ROZMEZÍ lineCount-1 PO...
					// lineCount (SAMOZŘEJMĚ, ŽE BYCH TO DAL DO NĚJÁKÉHO POLE, ZE KTERÉHO BYCH NAČETL PŘEDCHOZÍ)...
					// lineCount.
					
					// DÁLE BY MĚ ZAJÍMALO, PROČ KDYŽ ODDĚLÁM: ...
					/*	
						cout <<  ", stack NENACTEN " << ++c << ", bb " << 0 << ", Radek " << lineCount << endl; 
						break;
					*/
					// TAK TO ZOBRAZÍ JEN 156 hand NAROZDÍL OD PŮVODNÍCH 267.
					// SPRÁVNĚ JICH MÁ BÝT 279. KDYŽ ODDĚLÁM I VŠECHNY PODMÍNKY NAČÍTÁNÍ KARET, STACKU A BB...
					// TAK TO ZOBRAZÍ PŘESNĚ 279 HAND, COŽ JE S MÝM MOMENTÁLNÍM C++ UMEM NAD VRCHOLY MÉHO CHÁPÁNÍ :-(.
				}
			}
			
	   }	   				
}
}
}
return 0;
}

//DÍKY MOC ZA KAŽDÝ TIP, JAK TO UDĚLAT LÉPE :-))
MGRA
C / C++ › Rada při programování software
29. 4. 2016   #210323

Ne, jen in game helper. Napriklad dostanu pri 15bb AQo a ukaze to ze mam poslat all/in nebo tak neco :) potom na dalsim stole dostanu taky AQo při 20bb a ukáže to raise/call shove apod...

MGRA
C / C++ › Rada při programování software
29. 4. 2016   #210317

Mě by stačilo, kdyby mě někdo nasměroval s tím, jak vytáhnout ty karty a počet BB do textu a jak udělat okno, který by bralo něco z vrstvy pod ním a přitom zůstávalo stále nahoře.

Se zbytkem bych si už poradil.

MGRA
C / C++ › Rada při programování software
28. 4. 2016   #210300

Např. vycházím z GTO pro small blind za 25bb

http://s32.postimg.org/87mxmzh79/Bez_n_zvu.png

stůl 1: dostanu AKo

najedu na nej myší a někde v okně mi zobrazí: MNR/SV/ CS

stůl 2: dostanu QJs a zobrazí MNR/CALL/CS

zobrazené range se mění při počtu big blindů (5bb - 25bb) a jsou 4 (SB, BB vs. raise, BB vs. limp, BB vs. shove)

MGRA
C / C++ › Rada při programování software
28. 4. 2016   #210299

Dobrý den,

jsem profesionální hráč online pokeru a potřeboval bych pár rad.

O co de: Potřebuji vytvořit program, který by načetl karty a zobrazil příslušnou akci.

Takže co od toho očekávám, když najedu na příslušný stůl (okno se stolem) myší, tak by měl program přečíst karty a počet big blindů (to je to číslo uprostřed nahoře http://i.imgur.com/a0zMLYY.png) (nevím přesně na jakém principu by to mělo fungovat a nevím jestli herny neodchytávají print screen, nerad bych se se svým kapitálem dostal do problémů) a zobrazit někde v okně příslušnou akci.

Jedná se asi o 46 GTO (game theory optimal rangí = neexploitativní) a nevím jestli by vyšlo líp se je naučit než naprogramovat.

http://i.imgur.com/a0zMLYY.png

takže vstup by byl: karty a počet BB převést do textu

výstup: zobrazit akci, kterou bych si naprogramoval.

    požadavek je aby program pracoval dynamicky, to znamená, že když přejedu myší na jinej stůl aby už zobrazoval akci tam, stejně tak když budou rozdány nové karty.

Klidně jsem ochoten i zaplatit za pomoc.

dasd
C / C++ › jak uvolnit pamět?
4. 11. 2015   #206142

Díky moc, takže jestli to chápu správně, tak můžu uvolnit dynamickou pamět ve funkci mimo funkci jen, když bude ta dynamická pamět návratovou hodnotou. Samozřejmě za předpokladu, že ji nechci uvolnit hned ve funkci.

A nešlo by třeba:

delete[] init(testing);   //???

dasd
C / C++ › jak uvolnit pamět?
3. 11. 2015   #206103

   

#include <iostream>
#include <cstring>
using namespace std;

struct stringy {
	char * str;
	int ct;
};
void set(stringy & stru, char tes[]);
void show(stringy & stru, short x = 1);
void show(char tes[], short x = 1);

int main ()
{
	stringy beany;
	char testing[] = "Opravdu neni, co byval.";
	set (beany, testing);
	show(beany);
	show(beany,2);
	testing[0] = 'D';
	testing[1] = 'u';
	show (testing);
	show(testing, 3);
	show("Hotovo!");
	
	delete [] stringy.str;   //co tohle?
	
	return 0;
}

void set(stringy & stru, char tes[]){
	char * pt = new char [strlen(tes) - 1];   //tuhle pamet potrebuju uvolnit
	pt = tes;
	stru.str = pt;
}

void show(stringy & stru, short x){
	cout << stru.str<<endl;
}

void show(char tes[], short x){
	for (int i = 0; i <= x; i++)
	cout << tes << endl;
}

Díky moc!

MAd
C / C++ › Jsem asi mimo... rada s přes…
14. 10. 2015   #205616

 Čau, mám problém, jak udělat aby to při zadání prázdnýho pole u fullname přeskočilo veškerý cyklus a vrátilo správnou hodnotu...

zkoušel jsem:

if (pa[i].fullname == "")

if (pa[i].fullname == '\n') //nefunguje

jsem asi mimo, když ani tohle neumím :(

Zadání:

//fce ukládá udaje o studentech

//ukonci zadavani, kdyz dosahne zadaneho poctu zaku (v main())

//ukonci zadavani, když narazí na prazdny radek misto jmena studenta.

//fce vrací skutecny pocet naplnenych prvku


int getinfo(student pa[], int n)
{
	int i = 0;
	for (i; i < n; i++){
	cout << "Student c." << i+1;
	cout << endl << "Jmeno: ";
	cin.getline(pa[i].fullname, 30);
	cout << "Zaliba: ";
	cin.getline(pa[i].hobby, 30);
	cout << "Znakma: ";
	cin >> pa[i].opplevel;
	cin.get();

	}
	return i;
}
MArek
C / C++ › Dynamická struktura s poli.
28. 9. 2015   #205254

Čau, mám problém, nevím jak volat dynamickou strukturu, konkrétně:

prisp * pt = new prisp[pocet]

chci zadavat data např. do prisp * pt = new prisp[0], potom prisp * pt = new prisp[1]... apod... Jsou to vždy jediná cvičení v Mistrovství v C++, který nedám.

Celý úkol je na straně 288. cvičení 6.

Díky moc za pomoc.

struct prisp
{
	string jmeno;
	int castka;
};


int main ()
{
	int pocet;
	cout << "Pocet prispevatelu: ";
	cin >> pocet;
	cout << endl << endl;
	
	int pocet_zaloha = pocet;
	prisp * pt = new prisp[pocet];
	
	for (pocet; pocet >0; pocet --){
	
		cout << "Zadejte jmeno darce: ";
		pt[pocet];
		cin.get();
		getline (cin, pt ->jmeno);
		cout << "Zadejte castku: ";
		cin >> pt->castka;
	}
	
	for (pocet_zaloha; pocet_zaloha > 0; pocet_zaloha--){
		pt[pocet_zaloha];
		
		cout << endl <<pt->jmeno <<endl <<pt->castka<<endl;
	}
	
	return 0;
}
madmancz
Visual Basic › Jak nastavit zpomalení všech…
4. 5. 2015   #201911

Když přepnu track bar na jedničku tak následující video zpomalí, ale když v listboxu přepnu video, tak už běží v normální rychlosti, i když je trackbar na jedničce :(

Poradte prosím,

díky MS! :)

madmancz
Visual Basic › Jak nastavit zpomalení všech…
4. 5. 2015   #201910

    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.ValueChanged, AxWindowsMediaPlayer1.Enter

        If TrackBar1.Value = 0 Then
            AxWindowsMediaPlayer1.settings.rate = 1
        End If


        If TrackBar1.Value = 1 Then
            AxWindowsMediaPlayer1.settings.rate = 0.5
        End If

    End Sub

Marek
Visual Basic › Přehrávání videa z listboxu
22. 7. 2014   #192326

jako co mám dát mezi toto :) díky moc

Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.Click

????????????????

AxWindowsMediaPlayer1.URL = "C:\MOV_0738(1).mp4"

 

Marek
Visual Basic › Přehrávání videa z listboxu
22. 7. 2014   #192325

Dobrý den,

potřebuji poradit jak přehrát video přes WMP v programu z listboxu...

V listboxu je jsou dejme tomu slova amerika a asie. A potřebuji aby se při kliknutí na ameriku spustilo jiný video než při kliknutí na asii.

Díky moc. Neumím v tom vůbec.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý