Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    salexn1
     
    хорошая кодировка...
     
    что-то у тебя с начальным i не того :)

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 17:43 07-12-2012 | Исправлено: akaGM, 17:44 07-12-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Это я код автора взял и не заметил, что I - не инициализировано...
    тут массив - дело второстепенное...

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 17:51 07-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    взять файл, считать из него целые цифры в массив, который тут же(второй кнопкой), вывести его в график TChar  Series1.AddXY.
    вот наверное сразу не учел кодировки и наличие иных символов.
     
    salexn1
    открыл акелпадом, 1251 ANSI.....создал новый блокнотом, та же кодировка.
    открываю старым кодом, те же грабли.
    а ваш тянет.
    начал менять кодировку, все полетело в тартарары.
     
    вобщем, уже читаю как вычитывать в массив потоком и побайтово. уж больно метод которым я тут жужжу, капризный.
    не обессудьте, притопаю ещо со своими граблями.

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 21:56 07-12-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
    Если вы будете использовать readln не забудьте что этот оператор читает только первое число и сразу перейдет к следущей строке. Последующий вызов readln уже будет читать число в новой строке файла. Таким образом если строка содержит несколько чисел то все числа кроме первого будут пропущены. Строки в файле разделяются символами перевод строки возврат каретки
     
      могу предложить попробовать такой вариант (подходит только для ANSII но обладает универсальностью) -- объявить переменную как char и операторам read считывать символ за символом. если символ принадлежит множеству (0..9) то этот символ приписывается в конец некой временной переменной строкового типа в противном случае полученную строку преобразуем в integer число и затем строку обнуляем далее читаем следущий символ и как только встретится символ из множества то приписываем этот символ в конец строки и весь процесс повторяется

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 23:09 07-12-2012 | Исправлено: alex1334, 23:29 07-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    и снова здравствуйте.
    вот пример, что нужно в массив. можно то или то. какой метод внесения в массив из файла лучше использовать?
    знаю, что надо было с этого начинать, но лучше поздно, чем никогда.
    hex_log.txt
    http://rghost.ru/42079417
    text_log.txt:
    http://rghost.ru/42079444

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 23:13 07-12-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
    чтение/запись текстовых файлов на паскале одна из базовых и простейших операций,
    тем более если ты сам формируешь эти файлы
    и не надо никаких val()
     
    1 21 31 41
    2 22 32 42
    3 23 33 43
    4 24 34 44
     
    for  i ;= to 4 do
      readln(x, y, z, w);
     
    куда уж проще...

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 23:39 07-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    доброе утро. всем.
    вот, вроде читает любое, но из цифр получается фигня, без добавления функции intTostr никак?

    Код:
     
    procedure TForm2.RzButton2Click(Sender: TObject);
    var
      h: THandle;
      key: array of Char;
      len: Cardinal;
      dummy: Cardinal;
      i: Integer;
    begin
      h:=CreateFile('zod.txt', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
      len:=GetFileSize(h, nil);
      SetLength(key, len);
      ReadFile(h, key[0], len, dummy, nil);
      CloseHandle(h);
      for i:=0 to dummy-1 do
        Memo1.Lines.Add(key[i]);
        label1.Caption:=(key[i]);
     
    end;
    end.
     

    на label1.Caption:=(key[i]) не обращайте внимание, это чтобы посмотреть, что там всплывает.

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 13:08 08-12-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
     
    я всё-таки не понял, каков формат файла?
     
    12345679000000
     
    и всё, одна строка? или сколько строк?
    что здесь значимого?
    и главное -- кто формирует этот файл: какая-то сторонняя программа или ты сам?

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 15:24 08-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    форматы файлов я выложил выше, на ргхосте.
    формирует программа. выдает два идентичных лога, один хексовое, второй десятичное. оба в текстовом формате. оригиналы.
    в логах могут быть и другие символы, слова. но интересуют только цифры.
    пример второго:

    Цитата:
     
    49
    492
     
    NO CARRIER
    13
    1380
    8049
    49
     

     
     

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 15:53 08-12-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
     
    ну приведи их здесь ещё раз под тегом more лично для меня :)
     

    Цитата:
    формирует программа
    ну это твоя программа, ты в ней _сам пишешь_ в файл, или это некая данность?

    Код:
    13
    1380
    8049
    49
    вот что тебе надо получить? три целых числа или отдельные цифры?
    типа 1380 или '1', '3', '8', '0' ? или вообще '13 '80'

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 16:30 08-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Подробнее...
    получить в массив числа 49,492,13,1380,8049,49.
     
    программа не моя. она слушает порт и выдает лог.
    пример под тегом.
    каждое новое число нужное для занесения в массив начинается с новой строки.
    как добавочное, в логе могут присутствовать что-то кроме целых чисел, но они не нужно.
     
     

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 17:31 08-12-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
    глянь...

    Код:

    {$APPTYPE CONSOLE}
     
    uses
      SysUtils;
     
    var
      str: string;
      nKeys: integer;
      keys: array of integer;
      fp: text;
      itmp, i: integer;
    begin
      nKeys := 0;
      setlength(Keys, 100000); // не очень красиво, но сойдёт...  
      assignfile(fp, 'test.txt');
      reset(fp);
      while not eof(fp) do begin
        readln(fp, str);
        writeln(str);
        str := trim(str);
        if (str = '') then continue;
        try
          itmp := StrToInt(str);
          Keys[nKeys] := itmp;
          inc(nKeys);
        except
        end;
      end;
     
      closefile(fp);
     
      setlength(Keys, nKeys); // realloc
      writeln('nKeys = ', nKeys);
      for i := 0 to (nKeys-1) do
        writeln(Keys[i]);
     
      setlength(Keys, 0); // free
    end.

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 19:02 08-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    уфф...проверял в критических условиях.
    работает.
    только изменил переменную
      fp: text; >> f: TextFile;
    надеюсь оно можно так.
    все замечательно.
    только консоль не понимаю, расшифровку.
    открываю файл, в консоли содержимое-потом переменная 'nKeys=1'-дубль содержимого, без лишнего.
    пример:
    Подробнее...

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 20:27 08-12-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta

    Цитата:
    только консоль не понимаю, расшифровку.
    открываю файл, в консоли содержимое-потом переменная 'nKeys=1'-дубль содержимого, без лишнего.  
    это через переводчик что ли пропущено?
     
    это выдача на экран для контроля, убери все writeln() -- будет тихо...

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 20:53 08-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    все красиво.
    просто я не знал как контролировать ход работы и прикладывал label или showmessage)
     
    так, тут о TChar. не велите казнить.
    что тут не так? надо по другому инициировать массив?!
    или вообще я "нарубил"?
    а может можно как не через код, а через TChar'овскую форму добавлять напрямую данные массива? но там только функции...
    Подробнее...
     

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 13:53 09-12-2012 | Исправлено: folta, 17:05 09-12-2012
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем привет! Появилась проблема с распаковкой Tak/OptimFROG в Delphi. Нашел заголовки в компоненте NewAC. Но ни черта не понял, что да как там. Например, по идее всё должно работать в этом коде, но выходной размер wav'ки 0 Кб:
    Код

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 14:09 09-12-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
    Вы вообще в курсе про область видимости переменных?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:20 09-12-2012 | Исправлено: Frodo_Torbins, 20:21 09-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    объявляя её в одной процедуре, она заканчивается c end. так?!
    посмотрел в нете...
    ага!

    Цитата:
    private
    { Private declarations }
    public
    { Public declarations }

    спасибо.  
    вот так и живу.
     
     
     
    Добавлено:
    и interface

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 22:25 09-12-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    folta
    У меня компилятор требует конец процедуры в виде end;
     
    Завершение end.  это конец модуля. Весь текст за этим оператором игнорируется и в исполняемый файл не включается

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 23:09 09-12-2012
    folta

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex1334
    да не, точку я не к месту поставил.
     
    что-то перегрузил я что-то,
    не пропускает

    Цитата:
     Series1.AddArray(gfx);

     E2250 There is no overloaded version of 'AddArray' that can be called with these arguments
    вот все. nKey объявлена в private
    Подробнее...

    Всего записей: 1177 | Зарегистр. 24-11-2010 | Отправлено: 16:29 10-12-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru