2011-11-14 16 views
-3

次の問題があります。関数の内部で使用できる定義済みの文字列がgameNameに含まれているかどうかを確認したいが、何とかそれらを戻しません。彼らは関数で宣言されているので、なぜ私は本当に理由を知らないし、主要部分に戻って輸送する必要があります。ところで、OpenFileDialog1のための入力が指定されたファイルです:HL1-SP-無限shift.7zコードが関数から文字列を戻していない

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 
    using System.Diagnostics; 
    using System.IO; 

    namespace MapTap2 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
    } 
    public string CheckGame(string sourceName, string gamename) 
    { 
     string hl1 = "hl1"; 
     string hl2 = "hl2"; 
     string hl2ep2 = "hl2-ep2"; 
     string hl2ep1 = "hl2-ep1"; 
     string bs = "bs"; 
     string prtl = "prtl"; 
     string prtl2 = "prtl"; 
     string op = "op"; 
     bool gamebool; 



     gamebool = sourceName.Contains(hl1); 
     if (gamebool == true) 
     { 
      gamename = "hl1"; 
      return gamename; 
     } 
      gamebool = sourceName.Contains(hl2); 
     if (gamebool == true) 
     { 
      gamename = "hl2"; 
      return gamename; 
     } 
     gamebool = sourceName.Contains(hl2ep2); 
     if (gamebool == true) 
     { 
      gamename = "hl2-ep2"; 
      return gamename; 
     } 
     gamebool = sourceName.Contains(hl2ep1); 
     if (gamebool == true) 
     { 
      gamename = "hl2-ep1"; 
      return gamename; 
     } 

     gamebool = sourceName.Contains(bs); 
     if (gamebool == true) 
     { 
      gamename = "bs"; 
      return gamename; 
     } 
     gamebool = sourceName.Contains(prtl); 
     if (gamebool == true) 
     { 
      gamename = "prtl"; 
      return gamename; 
     } 
     gamebool = sourceName.Contains(prtl2); 
     if (gamebool == true) 
     { 
      gamename = "prtl2"; 
      return gamename; 
     } 
     gamebool = sourceName.Contains(op); 
     if (gamebool == true) 
     { 
      gamename = "op"; 
      return gamename; 
     } 
     else 
     { 
      gamename = "You sure that this file is from PP?"; 
      return gamename; 
     } 

    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     openFileDialog1.InitialDirectory = @"C:\Users\"; 
     openFileDialog1.Filter = "7zip archives|*.7z|All files (*.*)|*.*"; 
     openFileDialog1.FilterIndex = 2; 
     openFileDialog1.RestoreDirectory = true; 
    } 

    private void cmdCompress_Click(object sender, EventArgs e) 
    { 
     string sourceName = ""; 
     string targetFolderName = "testy"; 


     Stream myStream; 
     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

     if(openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      if ((myStream = openFileDialog1.OpenFile()) != null) 
      { 
       sourceName = openFileDialog1.FileName; 
       lblconsole.Text = sourceName; 


       ProcessStartInfo p = new ProcessStartInfo(); 
       p.FileName = "7za.exe"; 

       p.Arguments = " e " + sourceName + " -o" + targetFolderName; 

       Process x = Process.Start(p); 
       x.WaitForExit(); 

       //Check the Game Version of the archive (line 20) 
       string gamename = "If you see this in Debug you failed.\n Y U NO MAKE WORKING CODE?"; 
       CheckGame(sourceName, gamename); 
       lblconsole.Text = gamename; 
       }      

     } 



    } 


} 

}関数を呼び出すとき

+0

これが問題を実証するために必要な最小限のコードですか?そうでない場合は、質問を編集してください。 –

+0

サイドノートで... switchステートメントの使い方を見てください!あなたが長いif-elseステートメントを持っているときはいつでも、switchを使うべき良い兆候です! – c0deNinja

答えて

1

、あなたが実際に設定していないが値を何かに戻す。試してみてください

string gamename = "If you see this in Debug you failed.\n Y U NO MAKE WORKING CODE?"; 
gamename = CheckGame(sourceName, gamename); 
lblconsole.Text = gamename; 

ここでは、さまざまな最適化を行うことができます。一つは、のように見えるためにあなたのif sおよびreturn Sを変更されている:コーディング

if (sourceName.Contains(hl1)) 
     return = hl1; 

ハッピー

+0

ありがとうございます!私は実際にこれに気づいていない私を恥じている。 –

+0

Lol、np。私たちは皆、愚かな間違いを犯します。 –

+0

@JanWerderヒントを追加しました。これがあなたの問題を解決した場合は、受け入れられた回答としてマークしてください。 ThxとSOにようこそ。次回のヒントは、問題に関連するコードを投稿して、他の人が必要以上に目を通らせる必要がないようにすることです:) –

関連する問題