С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43

Как прочитать файл VCF

18.01.2022, 08:39. Показов 2804. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, есть ли возможность прочитать файл VCF в delphi,нужно взять только номер! В интернете ничего не нашел(
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2022, 08:39
Ответы с готовыми решениями:

Как с помощью API функций прочитать/записать данные в ini-файл?
Привет! Как с помощью апишных функция прочитатьзаписать данные в ini-файл Пробывал RegCreateKeyEx (или что-то мохожее)-не получилось. ...

Как прочитать файл на сервере
Как прочитать файл на сервере? Другими словами как мне указать путь к файлу в интернете

Как прочитать файл на телефоне?
Здравствуйте как прочитать файл на телефоне? в место файла открывается папка на самсунге j3 memo1.Lines.Clear; LoadStream :=...

18
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
18.01.2022, 08:44
Что из себя представляет этот самый файл VCF?
0
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43
18.01.2022, 08:53  [ТС]
VCF представляет собой (Файл vCard состоит из записей типа vCard, каждая из которых содержит информацию одной визитной карточки. Запись vCard может содержать имя, адрес, номера телефонов, URL, логотип, видео и аудио фрагменты и пр.).
Например я хочу прочитать номер телефона из этого файла.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
18.01.2022, 09:13
amiyr, Вы пример файла приложите. Как можно о чем-то говорить, не зная предмета обсуждения.
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
18.01.2022, 09:18
.vcf это обычный текстовый файл. Вот строка с телефоном:
Code
1
TEL;CELL:89008001234
Ищи в каждой строке слово "TEL;" и после нахождения иди до двоеточия : потом до конца строки содержится сам номер телефона.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
18.01.2022, 09:21
Вот только что выгрузил у себя это дело... Да, все так, как написал AzAtom... Только у меня в другом чуток виде:
TEL;WORK;VOICE:1234567
Но префикс тот же...
Ну а если Вы и с текстовым файлом справиться не сможете...
0
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43
18.01.2022, 09:21  [ТС]
К сожалению файл такого формата нельзя сюда загрузить,но вот внутренность.

BEGIN:VCARD
VERSION:2.1
N:;+7**********;;;
FN:+7**********
TEL;X-CUSTOM(CHARSET=UTF-8,ENCODING=QUOTED-PRINTABLE,=D0=9C=D0=BE=D0=B1=D0=B8=D0=BB =D1=8C=D0=BD=D1=8B=D0=B9):+7***********
END:VCARD
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
18.01.2022, 09:25
Цитата Сообщение от amiyr Посмотреть сообщение
К сожалению файл такого формата нельзя сюда загрузить
А архиватор отменили?
Но даже не суть, ответ уже, в принципе, дан
0
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43
18.01.2022, 09:32  [ТС]
Спасибо за ответ, но хотелось бы узнать, есть ли способ работать с данным файлом не переводя его в текстовый документ, может есть какие-то готовые решения?
Мне удалось найти вот такой компонент (https://torry.net/pages.php?id=524)
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,352
18.01.2022, 09:34
Цитата Сообщение от amiyr Посмотреть сообщение
есть ли способ работать с данным файлом не переводя его в текстовый документ
А?! Это УЖЕ текстовый документ. Открой в том же "блокноте" и посмотри.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
18.01.2022, 09:38
amiyr, дело в том, что
1) VCF файл может содержать одну запись, а может - несколько.
Code
1
2
3
4
5
6
7
8
9
BEGIN:VCARD
VERSION:<НомерВерсии>
<тут сама запись 1>
END:VCARD
BEGIN:VCARD
VERSION:<НомерВерсии>
<тут сама запись 2>
END:VCARD
...
2) номеров телефонов в одной записи может быть несколько:
Code
1
2
3
4
5
6
7
8
9
10
BEGIN:VCARD
VERSION:3.0
FN:<Запись об имени контакта>
N:<Ещё одна запись об имени контакта>;;;
TEL;TYPE=HOME:+79988880188
TEL;TYPE=CELL:+79987773636
TEL;TYPE=WORK:89095611555202100
TEL:44044
CATEGORIES:myContacts
END:VCARD
3) запись имени может быть в разных кодировках.
в VERSION:3.0, по моему, кодировка UTF-8 без всяких трюков
в VERSION:2.1 было что-то вроде
Code
1
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;=D0=92=D0=B5=D1=80=D0=B0;;;
Теперь к сути вопроса.
Цитата Сообщение от amiyr Посмотреть сообщение
Например я хочу прочитать номер телефона из этого файла.
Можно загрузить VCF как текст и вручную распарсить - как видим, структура примитивная и разобрать её на элементы будет несложно.
Ну или можно воспользоваться готовым компонентом.
Например, бесплатный компонент
AceVCard is free open component for delphi 2009 compatible with VCard 3.0 specifications
AceVCard v.1.0
там присутствует полный исходник - ты можешь под себя адаптировать, если надо.
1
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,356
Записей в блоге: 3
18.01.2022, 09:49
тяжело...
amiyr, не надо путать текстовый формат файла и текстовый документ. И не надо огород городить, выискивать какие-то нафиг не нужные левые компоненты. Все, что Вам надо сделать: загрузить этот файл в TStringList, циклом пройтись по строкам и выбрать только нужную по признакам, которые Вам уже указали (TEL в начале, номер после двоеточия)

Добавлено через 3 минуты
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
запись имени может быть в разных кодировках.
Латиница-то как была, так и останется, цифры тоже... Так что, раз надо только номер, то совсем не важно, в какой он там кодировке...

Добавлено через 5 минут
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
Например, бесплатный компонент
Ой, да зачем!!! Так бы, глядишь, человек хоть про СтрингЛист бы прочитал - все бы польза была бы, а так рванет искать этот компонент, потом нифига не поймет, как его установить, начнутся дополнительные вопросы... Потом, таки, с грехом пополам, установит, но из за этого компонента среда глючить начнет, придется его удалять, удалится он, естественно, криво, намертво попортив не только среду, но и системные файлы ОС. В результате - переустановка Windows... А все от того, что лень было про стринглист прочитать
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
18.01.2022, 10:04
Цитата Сообщение от D1973 Посмотреть сообщение
а так рванет искать этот компонент
судя по его сообщению над моим - он уже сам этот компонент нашёл.

Проблема в том, что ему этот компонент не подойдёт. Там версия VCARD поддерживается 3.0, а у него старая 2.1

Цитата Сообщение от D1973 Посмотреть сообщение
но из за этого компонента среда глючить начнет
шутить изволите? Это библиотека. Ничего устанавливать не надо, достаточно положить в нужный каталог и написать имя в USES
всё!

Цитата Сообщение от D1973 Посмотреть сообщение
человек хоть про СтрингЛист бы прочитал
польза была бы, согласен.
Тут только вопрос в том, нужно ему получить то, что закодировано в
Цитата Сообщение от amiyr Посмотреть сообщение
Code
1
CHARSET=UTF-8,ENCODING=QUOTED-PRINTABLE,=D0=9C=D0=BE=D0=B1=D0=B8=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9)
или нет.
Если не нужно, тогда простых операций по обработке строки ему хватит за глаза.
Если нужно - тогда нужно или использовать готовые UrlDecode, HTTPDecode, TNetEncoding.URL.Decode и всуе, либо колхозить свою функцию по преобразованию.

PS. кстати, =D0=9C=D0=BE=D0=B1=D0=B8=D0=BB=D1=8C=D0= BD=D1=8B=D0=B9 - это "Мобильный"

Добавлено через 1 минуту
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
AceVCard v.1.0
тут у меня случайно левая ссылка подставилась! Приношу свои извинения!
AceVCard v.1.0 лежит по адресу https://torry.net/pages.php?id=524

Добавлено через 2 минуты
D1973, да, и что касается этого компонента AceCard. Вот как там выглядит загрузка файла
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TACEVCard.LoadFromFile(Filename: string);
var
  I, V: TStrings;
  FV, FFN, FN: Boolean;
  A: Integer;
  S, D1, D2: String;
begin
  I := TStringList.Create;
  V := TStringList.Create;
  try
    I.LoadFromFile(FileName);
.....
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
18.01.2022, 10:12
Ещё можешь почитать для саморазвития
https://ru.wikipedia.org/wiki/... xt=vcf%20.
учись самостоятельно находить подобную информацию
0
18.01.2022, 10:16

Не по теме:

Цитата Сообщение от mr-Crocodile Посмотреть сообщение
шутить изволите?
именно!

0
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43
18.01.2022, 12:15  [ТС]
DenNik, И что мне дала бы эта статья на википедии, я ее и без вас мог бы найти, вопрос был лишь в том как реализовать это в delphi!
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
18.01.2022, 12:19
Цитата Сообщение от amiyr Посмотреть сообщение
вопрос был лишь в том как реализовать это в delphi!

amiyr,
vCard — текстовый формат для обмена электронными визитными карточками
Нагуглить тему "работа с текстом в Delphi", если не умеешь - сложно?

Добавлено через 27 секунд
Цитата Сообщение от amiyr Посмотреть сообщение
я ее и без вас мог бы найти
но не нашёл, ибо не искал...
0
18.01.2022, 13:37

Не по теме:


Работа с текстовыми файлами - один из базовых навыков в программировании. И без разницы, на каком языке, текстовые файлы и в Африке текстовые файлы.
з.ы.
Парсинг текстовых файлов у нас был во втором семестре, курсач делал на Паскале. Четыре балла в поте лица, тяжело он мне тогда дался.

0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
18.01.2022, 13:39
Лучший ответ Сообщение было отмечено amiyr как решение

Решение

amiyr, в чём у тебя сложности возникли?

То, что VCard - это текстовый формат, ты уже знаешь.
То, что текстовый файл легко и непринуждённо можно прочитать в экземпляр класса TStringList, тебе уже тоже сказали.

теперь тебе осталось написать что-то вроде:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var
  TS: TStringsList;
  i, k : integer;
begin
  TS := TStringList.Create;
  try
    TS.LoadFromFile('ПолныйПутьКТвоемуФайлу.VCF');
    for i:=0 to TS.Count-1 do
       if Pos('TEL', TS.Strings[i])=1 then begin
           k := Pos(':',TS.Strings[i]);
           if k>0 then 
                 ShowMessage('Номер телефона: '+Copy(TS.Strings[i], k+1, Length(TS.Strings[i])-K))
       end;
  finally
    FreeAndNil(TS)
  end;
end;
код писал прямо на заборе, поэтому возможны ошибки/опечатки.

Теперь ты запускаешь этот код и рассказываешь, что тебя в нём не устраивает. ОК?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2022, 13:39
Помогаю со студенческими работами здесь

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

Как прочитать текстовый файл внутри бинарного?
В общем, внутри bsp файла зашивается текстовый файл с именем &quot;entity&quot; (или entit.txt.. точно не скажу) Как его можно...

Python3 прочитать VCF формат
Для решения одной задачи, требуется синхронизация мобильного телефона с базой клиентов в телефоне данные хранятся в формате VCF ...

Запись в файл формата *.VCF из DataGridView.Row
В цикле выдает ошибку System.ArgumentOutOfRangeException: &quot;Индекс за пределами диапазона. Индекс должен быть положительным числом, а его...

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в конец файла и прочитать до начальной позиции?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru