ما هي أفضل طريقة لعرض في المئة كاملة في تطبيق صافي CLI؟

StackOverflow https://stackoverflow.com/questions/1076761

سؤال

وأنا أعمل على تطبيق CLI الذي يتعامل مع تحميل الملفات، وترغب في الحصول على مزيج من الناتج إلحاق والكتابة. من الناحية المثالية أن ننظر بشيء من هذا القبيل:

c:\>upload
file1.dat       100%
file2.dat       100%
file3.dat        59%, 36.4k/s

وأود فقط الصف الأخير لتحديث بشكل دوري في المئة سرعة كاملة وحديثة. وأنا أعلم أنني يمكن استخدام SetCursorPosition لكتابة الإخراج إلى أي جزء من وحدة التحكم، ولكن يبدو أن هناك أي GetCursorPosition والموقف المطلق من اسم الملف الأكثر المطبوعة مؤخرا سوف تختلف. وأتساءل أيضا كيف أن كل هذا سوف يؤثر على الانتاج إعادة توجيه، ولكن التعامل مع هذا بشكل صحيح ليست حرجة لهذا التطبيق.

تعديل : لتبدو مثل Console.CursorLeft / Console.CursorTop الخ سوف تعطيني موضع المؤشر الحالي. نظرت الحق في طب الطوارئ أيضا! اوه حسنا. الحرة إجابة مقبولة إذا كان أي شخص يريد ذلك.

هل كانت مفيدة؟

المحلول

هل تعتبر باستخدام Console.CursorLeft / Console.CursorTop للحصول على مؤشر الوضع الحالي ؛-)

نصائح أخرى

وهذا هو بسيط جدا القيام به. الطابع \ ص يتحرك المؤشر إلى بداية السطر الحالي.

for(int i = 0; i <= 100; i++)
{
   printf("Progress: %02d \r", i);
   fflush(stdout);
   Sleep(200);
}

printf("\n");

وانها ليست وجود قيود المنبر؛ وأنا أعلم أن الشتائم هي وسيلة جيدة للقيام فقط هذا النوع من الاشياء، وهناك نسخة ويندوز. (Nethack هو مثال عظيم لمجرد نوع من الرقابة التي تحتاج إليها، وإصدار وحدة التحكم ويندوز هو مسلية جدا على سبيل المكافأة.) أنا لا أعرف إذا كان هناك أي شيء لهذا المستوى من السيطرة على .NET، على الرغم من. ربما تجميع في التعليمات البرمجية المدارة من الشتائم قد تفعل ما تريد؟

وأبسط الحلول التي جاء من العصور القديمة DOS، هو أن يكتب أزرار لإعادة الكتابة بما فيه الكفاية (\ ب) إلى وحدة التحكم لمسح الانتاج في المئة الماضي، ومن ثم طباعة واحدة جديدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top