Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Строки

27K
22 февраля 2010 года
TDK
29 / / 30.09.2008
Помогите решить задачку имеется текстовый файл мне нужно прочитать от начала файла 21 байта до конца строки и записать в буфер и вывести в меседжбоксе как это реализовать на WinApi? Я делаю это так

 
Код:
HANDLE hFile;
        DWORD  dwBytesWritten, dwBufSize=2048;
        hFile = CreateFile("log.txt", GENERIC_READ, 0, NULL, OPEN_ALWAYS, 0, 0);
        SetFilePointer(hFile, 21, NULL, FILE_BEGIN);;
        ReadFile(hFile, str, strlen(str), &dwBytesWritten, NULL);        
        MessageBox(NULL, str, "", NULL);
        CloseHandle(hFile);


но читается все строка целиком, а вот как обрезать
24K
22 февраля 2010 года
engel65536
50 / / 17.10.2007
 
Код:
ReadFile(hFile, str, strlen(str), &dwBytesWritten, NULL);

Как это у вас так? Изначально в переменной str нет строки (т.е. там сразу идёт терминальный ноль - это в лучшем случае, в худшем - там мусор), а вы вычисляете её длину - так не выйдет. Вам надо или считать из файла посимвольно, пока не наткнётесь на ноль, или вообще читать сразу много данных (размер должен заведомо превышать максимальную в вашей задачи длину строки) - и тогда при обработке строк ваша str автоматически будет обрезаться по первому нулю в ней.
64K
27 декабря 2010 года
JuliaR
6 / / 05.12.2010
Пожалуйста помогите! Задача такая: Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно выводиться один раз.

программа готова...

Program P1;
Uses crt;
Var text: string;
a: array[1..255] of char;
i, j, n: byte;
begin
clrscr;
Writeln (' Vvedite text' );
Read (text);
For i :=1 to length (text) do
begin
a := chr(i); n:=0;
for j:=1 to length (text) do
if a = text [j] then n: = n+1;
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;
Readln;
Readln;
End.


Есть программа готовая л/р по строкам,делала не сама,поэтому не могу нормально объяснить вот этот момент...


Writeln (' Vvedite text' );
Read (text);
For i :=1 to length (text) do
begin
a := chr(i); n:=0;
for j:=1 to length (text) do
if a = text [j] then n: = n+1;
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;


....пожалуйста напишите коментарии к каждой строчке)))


заранее огромное спасибо))
29K
27 декабря 2010 года
Енот_в_Засаде
224 / / 09.11.2010
Код:
Writeln (' Vvedite text' ); //выводит сообщение на экран

Read (text); //считывает введённый пользователем текст

For i :=1 to length (text) do //цикл от 1 до значения=длине введённого текста

begin
a:= chr(i); //в массив a записывается символ с порядковым номером i (в таблице ASCII)
 
n:=0; //обнуляем счётчик

for j:=1 to length (text) do //цикл от 1 до значения=длине введённого текста

if a  = text [j] then n: = n+1; //если эл. массива a  = эл. массива text [j]  увеличиваем счётчик на единицу (подсчитываем сколько раз символ a  встречается во введенном тексте text)

//если n не равно 0 выводим сколько раз символ a встречается во введенном тексте
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;

как-то так:)
64K
28 декабря 2010 года
JuliaR
6 / / 05.12.2010
Спасибо!!!))))))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог