Чтение не по одной строке, а сразу по несколько строк

Тема в разделе "WASM.HEAP", создана пользователем Luna, 24 ноя 2010.

  1. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    dZentle_man

    ахах, и даже, если бы я "в тему" вообще не писала, опять так же ответил)))

    хорошо, чувствую, предстоят тяжкие думы о вложенных циклах Х)

    Код (Text):
    1. for (j=0;j<EOF(#1);j=j+10) //организация большого цикла до конца файла
    2.   {for(i=j;i<j+10;i++)         //считывание по 10 новых строчек- (не соображаю, правда ли это)
    3.      {LineInput #1, mass[i];}
    4.    count++;                     //увеличиваем количество актов (акт состоит из 10 строк)
    5.    }
    пффф...выше представлен чудо-юдо год- смесь с++ и visual basic
    а вообще- правда, лучше пойду-ка подумаю =)
     
  2. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Ээ... нет, воздержался бы) Хотя это еще не значит что мне не интересно ;)


    Мадам знает толк в извращениях)
     
  3. oleg545

    oleg545 New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2008
    Сообщения:
    453
    Com[e]r
    Я не троль. Я не хочу чей-нибудь обиды, злости. Например, про те линки на рассказы о насиловании и рвании задниц, это я просто хотел доставить удовольствие крису, он вроде писал, что даже майку носит с надписью бдсм. Ну и просто думал, что на форуме контингент шизофренический, особо злиться не будут. Но, к сожалению, тут оказалась куча интеллигентов, и даже не писдолисов.
    dZentle_man
    Ещё один моралист.
    Z3N
    А чего целую ветку стерли?
     
  4. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    oleg545
    Ну, удаления сообщения тебя бы не остановило ;)

    Странные вещи вы говорите... шизофренический и злиться не будут... шизофреника спровоцировать может что угодно. А уж статьи про рваные задницы просто взорвут его мозг.
    Ведь он не может отличить фантазии от реальности, а фантазии насчёт рваных задниц не всем, знаете ли, приятны.
    Не зря же их изолируют....
     
  5. RX200

    RX200 New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    86
    Luna
    Вот с этого и надо было начинать)
    а ваш код с циклом ябы переписал примерно так:
    Код (Text):
    1. for (j=0;j<EOF(#1);j++){
    2.   LineInput #1, mass[i];
    3.   if(!j%10) count++;}
     
  6. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    А я бы сделал ещё проще:
    Код (Text):
    1. sl:=TStringList.Create;
    2. sl.LoadFromFile
    3. А_сейчас_я_cделаю_со_всем_содержимым_файла_всё_что_захочу_и_не_надо_читать_по_строчкам(sl.Text);
     
  7. RX200

    RX200 New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    86
    или вообще:
    Код (Text):
    1. count=int(EOF(#1)/10)
    В общем, Луна, объясни задачу по русски, и сообразим, как нибудь. В беде, не оставим =)
     
  8. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    RX200, в Бейсике нет цикла for с условием. И, надеюсь, никогда не появится. Того, как Микрософт нипадецки изуродовал этот нехитрый язык, и так более чем достаточно. Единственное, что они там сделали умного - это for each.
     
  9. RX200

    RX200 New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    86
    CyberManiac
    Я бэйсик не знаю, сразу говорю. Но логика понятна. Там просто поделить надо, количество строк на 10 и преобразовать в int тип.
    А всякие извращения с кучей циклов по моему там лишние.
     
  10. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Да кто вам сказал что она в беде? Не с курсовой пришла, не экзамен пересдает. Ей просто интересны какие могут быть подходы к решению ее задачи. А на текущем уровне ей самой себе сложно объяснить что она хочет. Объяснение задачи - это вообще половина решения.


    Да ни фигасе просто у вас. Я такими гемороями даже себе голову не заморачиваю. Если к решению можно прийти через задний проход - это еще не значит что решение это самое очевидное.
     
  11. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    BOOL ReadFileEx(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead, LPOVERLAPPEDlpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE pCompletionRoutine);
     
  12. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    А вы в курсе, что байты и строки - это, какбэ, не одно и то же?
     
  13. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    ну просветите)
     
  14. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    На всякий случай сформулирую настоящую задачу, хех)

    В некотором царстве, в некотором государстве жил-был огромный,гигантский, трудночитаемый файл...
    Состоял он из миллионов актов примерно по 10-20 строчек в каждом =)
    ...причём каждый акт начинался со слова "начало_акта" и заканчивался словом "конец_акта"
    Однажды царю сего царства приспичило прочитать этот файл
    ...а сделать это можно было только при помощи ProgressBar(cтроки прогресса, если что)
    А так так царь вдобавок был не простым обычным царём, а на редкость очень привередливым...он приказал своим служащим читать файл по актам, и в отдельном окошке считать количество этих актов...

    так вот эти служащие- в лице меня- никак не могут справиться с данной задачей )
     
  15. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Однажды царю сего царства приспичило прочитать этот файл
    ...а сделать это можно было только при помощи ProgressBar(cтроки прогресса, если что)


    Прогресс никак не влияет на считывание файла

    Думаю, MapViewOfFile лучше всего подойдёт для этих целей.
    И реализовать проще на С/С++/asm, чем на VB
     
  16. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Сказали же, что царь привередливый)


    А еще проще наверное на пехепе, перле или пейтоне. Может ей выучить все шесть этих языков и прикинуть каким ей лучше реализовать?) А насчет бейсика - я ее сразу на другие форумы послал.


    Ну был один принц, который мог справиться с задачей. Но для этого помимо клавы ему нужно было держаться второй рукой в процессе программирования за то, о чем великий бог Great запретил поминать всуе) Так что задача так и оставалась ждать своего героя... в белых доспехах...
     
  17. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    Luna
    читаем по 1024 байтов из файла и выводим на экран
     
  18. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    not1
    Ты про "cтроки прогресса" забыл!
    Принцем - не будешь )

    Код (Text):
    1. HANDLE h;
    2.   h=CreateFile("C:\\test.txt",GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
    3.   DWORD read;
    4.   char *buf=new char[1024];
    5.   while(read)
    6.   {
    7.   ReadFile(h,buf,1024,&read,(LPOVERLAPPED)NULL);
    8.   cout<<read<<":"<<buf<<endl;
    9.   }
    10.   int fsize=GetFileSize(h);
    11.   // Тут проверка  fsize на соотношение с 1024
    12.   fsize=fsize%1024;
    13.   if (!fsize) return 0;
    14.   while(fsize)
    15.   {
    16.       cout<<"#"<<endl;
    17.       fsize--
    18.   }
    19.   CloseHandle(h);delete[]buf;
    Luna
    Сначала Криса тут наблюдали с его "болью душевной",
    теперь еще один "ждет своего принца" ...
    Тут - нашествие какое-то.
     
  19. black_hole

    black_hole New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    44
    Код (Text):
    1. #include <stdio.h>
    2. #include <string.h>
    3. #define FILE_SIZE ???// размер
    4. unsigned char buffer[FILE_SIZE];
    5. char* temp=0;
    6. int main(int argc,char** argv)
    7. {
    8.      FILE* fin=fopen(argv[1],"rb");
    9.      int c,i=0,j=0;
    10.      while((c=getc(fin))!=EOF) //
    11.     {                              //
    12.         buffer[i++]=c;// тут можно оптимизировать чтение с помощью fread и подбора размера части для чтения, что попытались сделать раньше:)
    13.     }                            //
    14.      i=0;
    15.      while(i<FILE_SIZE)
    16.      {
    17.     i++;
    18.         if (buffer[i]=='p')
    19.     if (buffer[i+1]=='a')
    20.     if (buffer[i+2]=='g')  
    21.     if (buffer[i+3]=='e')
    22.     {
    23.         fwrite((const char*)(&(buffer[j])),1,i-j,stdout);j=i;i+=6;
    24.         getc(stdin);
    25.     }
    26.      }
    27.       fclose(fin);
    28.      return 0;
    29. }
    Это если выводить нужно постранично.
     
  20. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    У вас же есть работающий вариант, что ещё вам надо?