Skocz do zawartości
  • Ogłoszenia

    • Uzjel

      GMClan wrócił!   12.08.2017

      GMClan.org już działa, więc jeżeli ktoś wchodził przez adres forum.gmclan.org to może już wrócić do starych zwyczajów. Jeżeli strona wam się nie wyświetla to wyczyście cache i ciasteczka.
    • gnysek

      Świętujemy urodziny GMCLANu ?   16.08.2017

      Wypowiedzcie się! http://forum.gmclan.org/index.php?/topic/34002-15-lat-gmclanu-świętujemy  
SimianVirus7

c# - część nazwy pliku

Rekomendowane odpowiedzi

Dzień dobry :bye1:

 

Chciałem liznąć trochę czegoś innego niż skryptowy język z gm'a. Mam bardzo podstawową znajomość języka C++ ale zdecydowałem się na C# ze względu na Unity. Używam programu Microsoft Visual Studio i próbuje napisać mój pierwszy okienkowy program (dotychczas tylko konsolowe w C++ (lekcje informatyki)).

 

Sprawa jest pewnie banalna ale męczę się z tym od wczoraj i uważam siebie za głąba, bo pomimo przeczytania znacznej ilości stron na ten temat, nie wiele zrozumiałem. Mianowicie chodzi mi o wyszukiwanie nazwy folderu ale ze znajomością tylko części jego nazwy. Mam coś takiego:

 

GML
public string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

string dir_mc = appData + @"\.minecraft";

string test = (dir_mc + "\\versions");

 

DirectoryInfo di = new DirectoryInfo(test);

foreach (var fi in di.GetFiles("1.11.2-forge1.11.2*"))

{

textBox2.ForeColor = System.Drawing.Color.Green;

textBox2.Text = "Zainstalowano";

}

 

Podana jest ścieżka do folderu, gdzie są dwa podfoldery:

- 1.11.2

- 1.11.2-forge1.11.2-13.20.0.2227

 

Założenia są takie: Jeśli istnieje folder o nazwie 1.11.2-forge i dalej, to wypisz Zainstalowano

 

Nie mam pojęcia jak to wyjaśnić. Chodzi mi o funkcję jak w MySQL:

Wypisz wszystkie miejscowości na literę M - SELECT nazwa FROM Miejscowosci WHERE nazwa LIKE("M*");

 

Wzorowałem się dzięki przykładom na tej stronie

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Rozwiązałem swój problem. Mózg boli, a gałki oczne odmawiają posłuszeństwa ale było warto ^_^

Okazało się, że to było o wiele prostrze (ale przynajmniej dzięki ćwiczeniom troszkę ogarnąłem pętle foreach której nie miałem na lekcjach informatyki)

 

GML
string dir_mc = appData + @"\.minecraft";

string dir_ver = (dir_mc + "\\versions");

 

string[] folder = Directory.GetDirectories(dir_ver, "1.11.2-forge*");

 

textBox2.ForeColor = System.Drawing.Color.Red;

textBox2.Text = "Minecraft Forge - nie zainstalowano!";

 

foreach (string nazwa in folder)

{

textBox2.ForeColor = System.Drawing.Color.Green;

textBox2.Text = "Minecraft Forge - zainstalowany";

}

 

PS: Nie wiem, czy post usunąć czy zostawić dla przyszłych wojowników C# którzy będą mieli ten sam problem. Boję się o ostrzeżenie w temacie nabijania postów :jezor:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Danielus    0

Logika twojego programu jest dziwna : )

 

Step 1. Pobierz wszystkie katalogi które pasują do podanego wzorca

Step 2. Ustaw domyślne wyświetlanie jako "nie zainstalowano"

Step 3. Dla każdego znalezionego folderu zmień ten sam string na "zainstalowano"

 

Po co robić to dla każdego folderu?

Jeśli chcesz sprawdźić czy znalazł jakikolwiek to nie lepiej:

 

GML
if( folder.length > 0 )

?

 

<zwracam tylko uwagę że uzywasz pętli zupełnie bez sensu>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Faktycznie, ustawienie domyślnie wyświetlania jako "nie zainstalowano" jest rozsądnym pomysłem ale często piszę program bez uprzedniego planowania dlatego często wychodzą mi takie utrudnienia. Pętlę zastosowałem dlatego, że to była moja jedyna opcja, z którą udało mi się wyszukiwanie folderu, którego znam tylko część nazwy. Przy następnym tworzeniu jakiegokolwiek programu, będę kierował się Twoimi podpowiedziami :thumbsup:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×