Diskuze: Cesta k souboru v textovém souboru

C# .NET .NET (C# a Visual Basic) Cesta k souboru v textovém souboru American English version English version

Avatar
Neaktivní uživatel:

Jsem docela začátečník ale jak mám udělat aby se po kliknutí na tlačítko otevřel soubor.exe ,a cesta k němu je uložena v textovém souboru přiloženém k programu a šla modifikovat tak že si člověk jednoduše otevře ten txt soubor a přepíše ji třeba v poznámkovém bloku ?

Doufám že jsem to napsal srozumitelně :)
za radu předem děkuji :)

Odpovědět 1.8.2014 1:18
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

Je to v Microsoft Visual Studio 2013 jsem zapomněl dodat :)

Nahoru Odpovědět 1.8.2014 1:45
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:
private void Click(object o, EventArgs e)
{
   Process.Start(File.ReadLines("cesta_k_tomu_souboru_kde_je_nazev_exečka").First());
}

nebo takhle

Process.Start(File.OpenText("cesta_k_tomu_souboru_kde_je_nazev_exečka").ReadLine());

Těch možností, jak načíst text ze souboru je hodně :)

Editováno 1.8.2014 1:48
 
Nahoru Odpovědět 1.8.2014 1:47
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:

Private Sub PictureBox5_Clic­k(sender As Object, e As EventArgs) Handles PictureBox5.Click
Process.Start(Fi­le.OpenText("C:\U­sers\Uživatel1\Des­ktop\Project\Mass Effect Trilogi\Cesta­.txt").ReadLi­ne());
End Sub

mám to napsané dobře ? mě to totiž nefunguje , nevíš co s tím ?

Nahoru Odpovědět 1.8.2014 1:55
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:

Překonvertuj si to do VB, tohle je C#. Názvy tříd i metod jsou stejné, jen VB má jinou syntaxi.

 
Nahoru Odpovědět 1.8.2014 2:01
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:

jsem opravdu začátečník jak to mám překonvertovat ?

Nahoru Odpovědět 1.8.2014 2:05
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:

Ve skutečnosti tam asi stačí jen smazat ten středník :)

 
Nahoru Odpovědět 1.8.2014 2:13
Avatar
Neaktivní uživatel:

I tak to nefunguje :(

Nahoru Odpovědět 1.8.2014 13:08
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

Private Sub PictureBox5_Clic­k(sender As Object, e As EventArgs)
Process.Start(Fi­le.ReadLines("C:\U­sers\Uživatel1\Des­ktop\Project\Mass Effect Trilogi\Cesta­.txt").First())
End Sub

zkoušel jsem i toto a také nic sice žádný error ale taky se nic nestalo soubor se neotevřel :(

Nahoru Odpovědět 1.8.2014 13:15
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Vojtěch Pospíchal:

Proč si místo řešení kravin raději nepřečteš začátečnické tutoriály? Takhle jen zatěžuješ ostatní.

Try
    Using sr As StreamReader = New StreamReader("FileWithEXE.txt")
        Dim line = Await sr.ReadToEndAsync()
        Process.Start(line)
    End Using
Catch
    ResultBlock.Text = "Could not read the file"
End Try

A jdi si nastudovat nějaké tutoriály. Nikdo ti tady za tebe nebude programovat tvoje aplikace.

EDIT:// Vlož to do toho buttonu, a doplň cestu ve formátu

C:\Program Files (x86)....

místo FileWithEXE.txt

Editováno 1.8.2014 13:17
 
Nahoru Odpovědět  +1 1.8.2014 13:16
Avatar
Odpovídá na Vojtěch Pospíchal
Neaktivní uživatel:

ale já je čet, ale když si myslíš že jsi tak chytrý tak my řekni jak to že ani tvůj kód nefunguje :)

Editováno 1.8.2014 13:26
Nahoru Odpovědět 1.8.2014 13:25
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

Poslední Post :D

Nahoru Odpovědět 1.8.2014 13:31
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Vojtěch Pospíchal:

Možná proto, že na formuláři nemáš label s názvem ResultBlock a nemáš naimportovaný System.IO. Jestli jsi četl jen ty úplně základní tutoriáli, tak ti toto musí bejt jasný.

 
Nahoru Odpovědět  +1 1.8.2014 13:37
Avatar
Odpovídá na Vojtěch Pospíchal
Neaktivní uživatel:

Ty co jsem četl byli psané do konzole takže netuším jak to dát do své NF App

Nahoru Odpovědět 1.8.2014 14:09
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Vojtěch Pospíchal:

Jak jsem říkal. Přečti si začátečnické tutoriály. Tohle vlož jako import na začátek tvého kódu

Imports System.IO

A jestli nevíš jak přejmenovat label na formuláři, tak je mi líto, ale to ti nepomůžu.

 
Nahoru Odpovědět 1.8.2014 14:27
Avatar
Odpovídá na Vojtěch Pospíchal
Neaktivní uživatel:

to už tam mám a furt to samé jako na tom screenu. a vložil jsem to správně úplně nahoru nad class

Editováno 1.8.2014 14:29
Nahoru Odpovědět 1.8.2014 14:28
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michael Škrášek:

Nevim jak je to ve VB, ale v C# tam musíš ještě dát

using System.Diagnostics;
Nahoru Odpovědět 1.8.2014 15:02
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Neaktivní uživatel
Michael Škrášek:

Ukázka konzolové aplikace ještě v C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Diagnostics;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                StreamReader sr = new StreamReader(@"soubor.txt");
                Process process = new Process();
                process.StartInfo.FileName = sr.ReadLine();
                process.Start();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
Nahoru Odpovědět 1.8.2014 15:05
Proč to dělat složitě, když to jde jednoduše.
Avatar
Michael Škrášek:

Měl jsem tam chybu.

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 using System.Diagnostics;
 using System.IO;

 namespace ConsoleApplication2
 {
     class Program
     {
         static void Main(string[] args)
         {
             try
             {
                 StreamReader sr = new StreamReader(@"soubor.txt");
                 Process process = new Process();
                 process.StartInfo.FileName = sr.ReadLine();
                 process.Start();
             }
             catch (Exception ex)
             {
                 Console.WriteLine(ex.Message);
                 Console.ReadKey();
             }
         }
     }
 }

A ten @"soubor.txt" je jméno souboru ve kterém je ta cesta.

Nahoru Odpovědět 1.8.2014 15:14
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michael Škrášek
Neaktivní uživatel:

dík moc pokrok už to háže jen jeden error místo dvou díky :)

Nahoru Odpovědět 1.8.2014 15:15
Neaktivní uživatelský účet
Avatar
Nahoru Odpovědět 1.8.2014 15:16
Proč to dělat složitě, když to jde jednoduše.
Avatar
Neaktivní uživatel:

Error 1 'Await' can only be used when contained within a method or lambda expression marked with the 'Async' modifier.

Nahoru Odpovědět 1.8.2014 15:22
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michael Škrášek:

Z toho nic nepoznám, Je to VB aplikace, nebo C#? A dej sem kód, kterej si napsal + obrázek s Errorm.

Nahoru Odpovědět  -1 1.8.2014 15:25
Proč to dělat složitě, když to jde jednoduše.
Avatar
Neaktivní uživatel:

V Microsoft Visual Studio 2013

Imports System.Text
Imports System.IO

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private p As Point
Private Sub Form1_MouseDow­n(ByVal sender As Object, ByVal e As System.Window­s.Forms.Mouse­EventArgs) Handles Me.MouseDown
p = New Point(e.X, e.Y + (Me.Size.Height - Me.ClientSize­.Height))
End Sub
Private Sub Form1_MouseMo­ve(ByVal sender As Object, ByVal e As System.Window­s.Forms.Mouse­EventArgs) Handles Me.MouseMove
If e.Button = MouseButtons.Left Then
Me.Location = New Point(Cursor.Po­sition.X - p.X, Cursor.Position.Y - p.Y)
End If
End Sub

Private Sub Button1_Click(sen­der As Object, e As EventArgs) Handles Button1.Click
Using sr As StreamReader = New StreamReader("C:\U­sers\Uživatel1\Des­ktop\Project\MET\Ces­ta.txt")
Dim line = Await sr.ReadToEndAsync()
Process.Start(line)
End Using
End Sub

End Class

Nahoru Odpovědět 1.8.2014 15:32
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michael Škrášek:

Napiš to takto, VB moc neumím, ale mělo by to jít.

Imports System.Diagnostics
Imports System.IO

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Using sr As StreamReader = New StreamReader("cesta.txt")
                Dim line = sr.ReadLine()
                Process.Start(line)
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
End Class
Nahoru Odpovědět 1.8.2014 15:43
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michael Škrášek
Neaktivní uživatel:

Díky ,Díky Moc jsi třída vše funguje jak má :) !!! :)

mohu se zeptat kde byla chyba abych se poučil ?
bylo to v tomto ? Imports System.Diagnos­tics:)

Editováno 1.8.2014 15:54
Nahoru Odpovědět 1.8.2014 15:53
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michael Škrášek:

To taky, ale nevim co znamená

Await sr.ReadToEndAsync()

Což VB očividně nezná. :D
Na čtení řádků je prostě:

sr.ReadLine()

Možná stačilo jen oddělat Await a nechat jen:

sr.ReadToEndAsync()
Editováno 1.8.2014 15:58
Nahoru Odpovědět 1.8.2014 15:56
Proč to dělat složitě, když to jde jednoduše.
Avatar
Neaktivní uživatel:

Dim line = sr.ReadLine() zde se určuje řádek že ? :D

Edit : už jsem to udělal :)

Editováno 1.8.2014 16:08
Nahoru Odpovědět 1.8.2014 16:07
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michael Škrášek:

Jo, ale řádek je to 1. :

dim 1_radek = sr.ReadLine()
dim 2_radek = sr.ReadLine()
Nahoru Odpovědět 1.8.2014 16:09
Proč to dělat složitě, když to jde jednoduše.
Avatar
Nahoru Odpovědět 1.8.2014 16:09
Neaktivní uživatelský účet
Avatar
Odpovídá na Michael Škrášek
Vojtěch Pospíchal:

No to je krásný kód. Kde už jsem ho to jenom viděl.... Ha. Už si vzpomínám. To je ten můj kód, jen jsi změnil vypsání chyby z labelu do message boxu. Jak myslíš, že se může něco naučit, když je línej si jít přečíst ty nejzákladnější tutoriály? Já ho nasměroval, dokonce jsem mu poradil co má udělat. Ani tak nebyl schopný si tam tu jednu chybu opravit. Tímhle jsi mu prokázal opravdu velkou službu. Mimochodem: ReadToEndAsync() je metoda jenž ti asynchronně přečte všechny znaky ze souboru a vytvoří z nich string. Což znamená, že kdyby četl z delšího souboru, tvou radou by se celý program zasekl než by se soubor načetl. Když ale použije ReadToEndAsync program běží v pohodě dál - http://msdn.microsoft.com/…adtoendasync(v=vs.110).aspx

 
Nahoru Odpovědět 1.8.2014 16:40
Avatar
Odpovídá na Vojtěch Pospíchal
Michael Škrášek:

Jak říkám nevím co to znamená, proto jsem tam dal ReadLine.Nezměnil jsem jen to vypsání chyby, ale i naimportování

System.Diagnostics

:). Nevím jestli je tady nějakej tutoriál o procesech ve VB, ale nepříde mi to jako základní tutoriál. A čtení ze souborů taky ne.

Nahoru Odpovědět 1.8.2014 18:15
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michael Škrášek
Vojtěch Pospíchal:

Čtení ze souboru je naprosto triviální a základní věc. Pokud nevím, co nějaký kus kódu dělá, nebo co znamená, první věc co dělám je, že si to jdu zjistit. O opravení importů jsem mu psal, jeho blbost, že to neopravil. A jestli tu je tutoriál na procesy na VB je jedno, protože je tu na C# a tam jsou rozdíly jen v syntaxi kterou si stejně musí neustále vyhledávat v dokumentaci.

 
Nahoru Odpovědět 1.8.2014 18:28
Avatar
Odpovídá na Vojtěch Pospíchal
Michael Škrášek:

A můžeš mi dát odkaz na procesy v C#, protože ho nemůžu najít a potřeboval bych se taky trochu doučit. :D

Nahoru Odpovědět 1.8.2014 18:31
Proč to dělat složitě, když to jde jednoduše.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:

Ten člověk očividně napsal hello world a teď si chtěl udělat něco pro něj užitečného. Je těžké mu ukázat pár řádků kódu než do něj rýpat, že je to nejlepší takhle a takhle? Když nebude rozumět, tak se snad zeptá ne? Ještě mu plést hlavu s asynchronním programováním :D

 
Nahoru Odpovědět  +3 1.8.2014 18:33
Avatar
Odpovídá na Michael Škrášek
Vojtěch Pospíchal:

První odkaz pokud zadáš do vyhledávání C# procesy: http://www.itnetwork.cz/…ndows-update ;) Nevím jestli tu jsou i jiné k tomu dedikované články, ale v nejhorším najdeš něco na Google. Bez angličtiny to programátor stejně daleko nedotáhne.

 
Nahoru Odpovědět  -1 1.8.2014 18:46
Avatar
Odpovídá na Jan Vargovský
Vojtěch Pospíchal:

Ten člověk mi tvrdil, jak má tutoriály načtené ;) A žádné pletení s asynchronním programováním nebylo. Ukázal jsem mu kód, ve kterém bylo použito kvůli stabilitě. Je lepší aby už od začátku používal lepší variantu. Nevím proč upravovat kód k horšímu jenom kvůli tomu, že neumí správně naimportovat jmenný prostor, který mu ještě k tomu VS samo vyhledá. Že ani nedokáže přejmenovat label, to už je věc další.

 
Nahoru Odpovědět 1.8.2014 18:55
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michael Škrášek
Jan Vargovský:

Nemyslel si spíše práci s vlákny? :)

 
Nahoru Odpovědět 1.8.2014 20:21
Avatar
Odpovídá na Jan Vargovský
Michael Škrášek:

To bych se měl taky doučit, ale chtěl jsem spíš ty procesy.

Nahoru Odpovědět 1.8.2014 20:26
Proč to dělat složitě, když to jde jednoduše.
Avatar
Michal Žůrek (misaz):

tato diskuze je docela zajímavá.

1.) autor nezmínil že programuje, zde v méně tradičním jazyce Visual Basic
2.) jakmile jste to pochopili, ani přesto jste si neodpiustili kód C#, což autora jenom zmátlo.
3.) autor neumí základy, prostě neumí. Nikdo tu za něj nebude psát nikdy nic, pokud chce něco napsat sám, tak ať se vrátí k tutoriálům http://www.itnetwork.cz/…movani/vbnet
4.) http://www.itnetwork.cz/…3dacecaacca4#… toto mě dostalo. nevim co znamená - právě proto se v tom nemáš vrtat. VB očividně nezná - to že to naznáš a neumíš použít ty, neznamená že to VB nezná. sr.ReadToEndA­sync() ne, právě k tomu tam ten Await byl, ale tomu ty nerozumíš.
5.) autor neumí použít funkci vložit zdrojový kód, čimž se vlákno značně znepřehledňuje a roboti z toho taky nejsou zrovna 3× nadšeni.

Takže si to projdeme, autorovi v kódu chybí importy, který umožní zkrátit zápis

Using (System.IO.StreamReader sr = New System.IO.StreamReader("path")

Na

Using (StreamReader sr = New .StreamReader("path")

Visual Studio mu pro to zobrazí tzv. chytrou značku, která mu to dopíše automaticky. Autor by se měl naučit anglicky, aby rozuměl co za chyby mu to píše.

Dál se o tom nemá cenu zmiňovat, autor pouze zkopíroval cizí kód a nerozumí mu, asynchronní programovaní zde popisovat nebudu.

Nahoru Odpovědět  +1 1.8.2014 21:10
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Neaktivní uživatel:

já ve VB umím jen něco a u tohohle se přiznám že jsem to zkopíroval ale na konec jsem se to rozhodl vynechat a použít permanentní cestu k exe které jsem umístil do složky s programem .

Nahoru Odpovědět 1.8.2014 23:25
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

na tohle jsem zapomněl všem děkuji za ochotu :) dík

Nahoru Odpovědět 2.8.2014 22:56
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 42 zpráv z 42.