Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];

Вниз

Странности сложения строк   Найти похожие ветки 

 
romich ©   (2010-02-02 12:32) [0]


Buffer: array [0..1024] of Char;

InternetQueryDataAvailable(hResourceHandle, Size, 0, 0);
SetLength(strResult, Size);
strResult := "";

repeat
 InternetQueryDataAvailable(hResourceHandle, Size, 0, 0);
 if Size > 0 then begin
   InternetReadFile(hResourceHandle, @Buffer, SizeOf(Buffer), Downloaded);
   strResut:=strResult+String(Buffer);
 end;
until Size = 0;


Проблема в следующем: первые два прохода цикла в strResult исправно складывается значение буфера. Потом, несмотря на то, что в буфере содержится текст, содержимое strResult никак не меняется уже до завершения цикла. Почему?


 
KilkennyCat ©   (2010-02-02 12:41) [1]

размер маловат


 
romich ©   (2010-02-02 12:45) [2]

~7Кб весит целевая страница. Таким же выставляется размер строки.


 
Медвежонок Пятачок ©   (2010-02-02 12:50) [3]

содержимое strResult никак не меняется уже до завершения цикла. Почему?

например потому, что оно меняется внутри ифа
или например потому, что в буфере пусто


 
Медвежонок Пятачок ©   (2010-02-02 12:52) [4]

А это что за хрень?

SizeOf(Buffer),


 
romich ©   (2010-02-02 12:53) [5]

Неужели самого себя нужно цитировать?


 
oldman ©   (2010-02-02 12:53) [6]


> repeat
>    if Size > 0 then begin
>    end;
> until Size = 0;


Что это?


 
Медвежонок Пятачок ©   (2010-02-02 12:55) [7]

BOOL InternetReadFile(
 __in   HINTERNET hFile,
 __out  LPVOID lpBuffer,
 __in   DWORD dwNumberOfBytesToRead,  
__out  LPDWORD lpdwNumberOfBytesRead
);

И какая здесь связь с SizeOf(Buffer),
если SizeOf(Buffer) всегда равен 32?


 
Медвежонок Пятачок ©   (2010-02-02 12:55) [8]

32 битам или 4 байтам разумеется


 
Anatoly Podgoretsky ©   (2010-02-02 12:58) [9]

Медвежонок Пятачок ©   (02.02.10 12:55) [8]
1024 байта.
А вот то что нигде нет проверок на ошибки очень плохо.


 
romich ©   (2010-02-02 13:11) [10]

Я решил не загромождать код проверками на ошибки. Во время дебага видно, что буфер не пустой и иф отрабатывает нормально. По существу предложения будут?


 
Anatoly Podgoretsky ©   (2010-02-02 13:16) [11]

> romich  (02.02.2010 13:11:10)  [10]

Твое дело, можешь делать полностью неработоспособные или работающие при особых условиях программы, но к нам ты зачем же пришел, за чудом чтоли?


 
romich ©   (2010-02-02 13:35) [12]

Anatoly Podgoretsky, уж точно не за тем, чтобы объяснять значение новых слов или выслушивать сетования на незащищенность или неоптимизированность кода. Есть конкретный вопрос, на которой ожидается конкретный ответ. Если есть мысли по поводу интересующей меня проблемы - я их выслушаю, за этим я сюда и пришел. Если нет... И мое и ваше время дорого. Пока я не увидел ничего полезного в ответах.


 
Медвежонок Пятачок ©   (2010-02-02 13:39) [13]

repeat
InternetQueryDataAvailable(hResourceHandle, Size, 0, 0);
if Size > 0 then begin
//Далее идет вызов функции. Кому-то и зачем-то возвращается булевый результат. наверное это не просто так.
  InternetReadFile(hResourceHandle, @Buffer, SizeOf(Buffer), Downloaded);
  strResut:=strResult+String(Buffer);
  ShowMessage("В буфере конечно что-то может и есть, но на самом деле там " + String(Buffer));
end;


 
Anatoly Podgoretsky ©   (2010-02-02 13:45) [14]


> Пока я не увидел ничего полезного в ответах

Имеющий уши да услышит.


 
Медвежонок Пятачок ©   (2010-02-02 13:46) [15]

Есть конкретный вопрос, на которой ожидается конкретный ответ.

Никаких "странностей" сложения строк не существует.
Если в результате сложения двух строк одна из который не пуста результат сложения не меняется, значит второй операнд - это пустая строка.


 
Anatoly Podgoretsky ©   (2010-02-02 13:48) [16]

Ты еще расскажи ему как пользоваться отладчиком, вместо написания нормального кода.


 
Медвежонок Пятачок ©   (2010-02-02 13:53) [17]

отладчик - он тоже непростой. нужна нектороя сила духа чтобы верить ему и не верить глазам или своим ожиданиям.
а шоумессадж - оно почти на всех действует.


 
12 ©   (2010-02-02 13:56) [18]


> отладчик - он тоже непростой. нужна нектороя сила духа чтобы
> верить ему и не верить глазам или своим ожиданиям.

воистину так :)
http://delphimaster.net/view/2-1265010530/


 
romich ©   (2010-02-02 14:23) [19]

Очевидно, помещение темы в ветку "Начинающим" приводит к предвзятости отвечающих. Прежде всего:


> Далее идет вызов функции. Кому-то и зачем-то возвращается
> булевый результат. наверное это не просто так.


Не понимая сути происходящего зачем пытаться отвечать?


> Если в результате сложения двух строк одна из который не
> пуста результат сложения не меняется, значит второй операнд
> - это пустая строка.


Какая жалость... Может, мне приложить скриншоты отладчика или твоего любимого ShowMessage(), друг?


> Имеющий уши да услышит.


Покажи глухому как звучит решение вопроса, раз пошла такая пьянка.


 
Медвежонок Пятачок ©   (2010-02-02 14:28) [20]

Ну приложи скриншоты для тех итераций когда результат не меняется

InternetReadFile(hResourceHandle, @Buffer, SizeOf(Buffer), Downloaded);
ShowMessage("буфер :" + String(Buffer)) ;
strResut:=strResult+String(Buffer);
ShowMessage("результат " + strResut);


 
Медвежонок Пятачок ©   (2010-02-02 14:44) [21]

Покажи глухому как звучит решение вопроса, раз пошла такая пьянка.

где анализ кода возврата internetreadfile (true/false)?
где проверка последнего вар-параметра lpdwNumberOfBytesRead на предмет сколько байт реально было прочитано?


 
romich ©   (2010-02-02 14:49) [22]

Ок, а ты только придумай как сделать скриншот месседжбокса, который не помещается на экране.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.005 c
15-1263384716
pavel_guzhanov
2010-01-13 15:11
2010.04.04
новый лохотрон с СМС


3-1230121069
DSKalugin
2008-12-24 15:17
2010.04.04
как это будет для MSSQL?


15-1263472832
DeadMeat
2010-01-14 15:40
2010.04.04
Перехват информации


2-1265023414
И. Павел
2010-02-01 14:23
2010.04.04
Как поменять столбцы местами?


15-1262053212
brother
2009-12-29 05:20
2010.04.04
Отчет в FastMM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский