2013-08-12 4 views
-6

트위터에서 트윗을 얻으려고합니다.C# - 인덱스가 범위를 벗어났습니다.

모든 데이터를 데이터베이스에 저장 한 다음 Siebel에 전달합니다. 내가 오류 얻을

:

public void Call_Tweet_Update() 
    { 
     var service = new TwitterService(Consumer_Key, Consumer_Secret); 
     service.AuthenticateWith(Access_Token, AccessToken_Secret); 

     var tweets = service.ListTweetsOnHomeTimeline(new ListTweetsOnHomeTimelineOptions { Count = 200 }); 
     string[] twt_id = new string[50]; 
     long id = 0; 
     int i = 0; 
     int increment = 0; 
     string twtid; 
     string screenname; 

     foreach (var tweet in tweets) 
     { 
      if (tweet.InReplyToStatusId.ToString() != "") 
      { 
       if ((tweet.User.ScreenName == "IIPL_LTD") || (tweet.Text.StartsWith("@IIPL_LTD"))) 
       { 
    string replyid = tweet.InReplyToStatusId.ToString(); 

    while (replyid != "") 
    { 
     if (i == 0) 
     { 
      twt_id[i] = tweet.Id.ToString(); 
     } 
     id = Convert.ToInt64(replyid); 
     twtid = tweet.Id.ToString(); 

     i = i + 1; 
     twt_id[i] = twtid; 
     replyid = tweet.InReplyToStatusId.ToString();//Here I get an error 
     increment = increment + 1; 
    } 
    } 
} 

어떤 아이디어 : 아래

Index was out of range

코드인가? 미리 감사드립니다.

+5

귀하를 도와 드릴 수 있도록 더 많은 코드를 제공해야 할 수도 있습니다. –

+0

코드가 불완전합니다. twt_id는 어디에 정의되어 있습니까? – Steve

+0

처음에는'i'의 값은 무엇입니까? 또한 코드를 통해 단계를 밟았거나 코드를 작성하고 이동 했습니까? 'twtid' 어디 정의 된 ..? 어서 오세요 – MethodMan

답변

6

200 개의 트윗을 요구하고 문자열 배열의 크기를 50으로 지정 했으므로 처리 된 51 번째 트윗에서 폭발합니다.

var tweets = service.ListTweetsOnHomeTimeline(
    new ListTweetsOnHomeTimelineOptions { Count = 200 }); 
string[] twt_id = new string[50]; 

중 하나는 당신이 요청하는 트윗의 수를 변경하거나 요청 트윗의 수와 일치하는 문자열 배열의 크기를 변경 :

이 코드는 문제입니다.

UPDATE :

당신은 당신의 문자열 배열에 두 개의 서로 다른 인덱스에 동일한 트윗을 추가
if (i == 0) 
{ 
    twt_id[i] = tweet.Id.ToString(); 
} 
id = Convert.ToInt64(replyid); 
twtid = tweet.Id.ToString(); 

i = i + 1; 
twt_id[i] = twtid; 

는이에 코드를 변경 :

이 논리는 비생산적, 적어도 말을하는 것입니다 : replyid = tweet.InReplyToStatusId.ToString();의 목적은 무엇

twt_id[i] = tweet.Id.ToString(); 
i = i + 1; 

, 당신은 id = Convert.ToInt64(replyid); 및 01와 같은 어디서나 사용할뿐만 아니라에 모든 루프 반복, 값을 설정하는. 코드에서 사용되지 않는 논리를 정리해야합니다.

+0

여전히 작동하지 않습니다 ... – user2500094

+0

내 대답을 업데이트하고 코드에 대한 몇 가지 질문을했습니다. –

관련 문제