मैं सी # से डेल्फी 200 9 में दोषपूर्ण हूं, मुझे अब तक बहुत पसंद है।मेरा "अगर" कथन क्यों नहीं चल रहा है?
मैंने एक बाइनरी खोज प्रक्रिया लिखी, जो ठीक काम करता है। मैंने अपनी प्रो के अंत में एक सरल अगर-और कथन जोड़ा और यह आग नहीं लगा! मैं इसके साथ कुछ भी गलत नहीं देख सकता हूं और कहने के लिए शर्मिंदा हूं कि मैं फंस गया हूं। कृपया सहायता कीजिए!
procedure BinSearch;
var
min,max,mid, x: integer;
A : array[0..4] of integer;
rslt : integer;
begin
writeln('binary search');
A[0] := 34; A[1] := 65; A[2] := 98; A[3] := 123; A[4] := 176;
listarray(a);
x := 62;
min := 0;
max := 4;
repeat
begin
mid := (min + max) div 2;
if x > A[mid] then
min := mid + 1
else
max := mid - 1;
end;
until (A[mid] = x) or (min > max);
writeln(mid);
writeln(a[mid]);
if A[mid] = x then
rslt := mid
else
rslt := not mid;
if 54 = 65 then
rslt := mid
else
rslt := not mid;
end;
यह if A[mid] = x then
है जो आग नहीं करेगा। जब न तो सही या झूठी शाखाओं को आग लगाना, डीबगर बस उन पर सीधे छोड़ देता है। if 54 = 65 then
जो सिर्फ एक परीक्षण है वही करता है।
यदि मेरे दोहराना लूप के अंदर अगर ठीक काम करता है।
यदि मैं मिनी टेस्ट प्रो में कथन में समस्या की प्रतिलिपि बनाता हूं, और उसके बाद प्रो को कॉल करता है तो यह काम करता है, इसलिए यह मुझे लगता है कि यह गायब ;
की तरह प्रो में कुछ और है जिससे कुछ अजीब होता है लेकिन मैं इसे नहीं देख सकता । कृपया सहायता कीजिए!
चूंकि आरएसएलटी का असाइनमेंट स्टेटमेंट के अलावा कहीं भी कहीं भी उपयोग नहीं किया जाता है, इसलिए डेल्फी कंपाइलर अनुकूलन के हिस्से के रूप में कोड के उस हिस्से को हटा देता है। यह स्रोत कोड को प्रभावित नहीं करता है, बस उस कोड को ऑब्जेक्ट फ़ाइल में नहीं लिखता है। आपको शायद एक कंपाइलर चेतावनी मिली है कि आरएसएलटी वैरिएबल का कभी भी उपयोग नहीं किया जाता है ... – Sparky
स्टैक ओवरफ्लो और डेल्फी में आपका स्वागत है। –
बस एक टिप, आपको दोहराने तक लूप तक स्टार्ट-एंड जोड़ी की आवश्यकता नहीं है। – Todd