*** Update ***
Your not going to believe this... I just tested it on a Windows XP box, and I'm seeing what your seeing, but on my Windows 7 computer the results are positive; you just can't win today, sorry - and ignore the remarks below!
*** Update ***
I'm getting completely different results...
When I posted the ReadProgramString solution, you can see by my debug report that it was reading line by line, but you weren't seeing that from your tests.
And because of the Unicode requirements, your next option was to use ReadProgramData...
When I first tested with ReadProgramData I was getting the same results as you, but that was because I was reading the entire buffer at once. But when I adjusted my code to read 1 character at a time (not knowing where the carriage return was) my debug results were successful - identical to the debug results from ReadProgramString.
Is this another XP / Windows 7 thing I wonder, or maybe a version difference with 7Zip?
Debug Output:
0.
1. 7-Zip 9.13 beta Copyright (c) 1999-2010 Igor Pavlov 2010-04-15
2. Scanning
3.
4. Creating archive my_archive.7z
5.
6. Compressing Images\dance1.gif
7. Compressing Images\dance2.gif
8. Compressing Images\dance3.gif
9. Compressing Images\watermark.gif
10. Compressing Images\about.png
11. Compressing Images\about_fuzzy.png
12. Compressing Images\background.png
...
122.
123. Everything is Ok