Всем здравствуйте!
приведу цитату с другого форума
Имеется вот такой код (ВТОРЫЕ СУТКИ ПОЧТИ БЕЗ СНА ПРИЧЕСЫВАТЬ КОД НЕ СТАЛ. ИЗВИНИТЕ ЗАРАНЕЕ
)
есть файл - база контактов с айфона, с моим контактом....
Вопрос! если один контакт в принципе ничего сложного.... но что делать если к одной учетке привязано два или более телефонов
Тоесть как по удаленным данным.... привести их в соответствие: ФИО - Телефон, email, второй телефон и т.д
ЗАРАНЕЕ спасибо всем
Добавлено:
прикреплю словари
приведу цитату с другого форума

Приветствую всех!
Имеется SQLite 3 база контактов из iphone 3gs, в любом SQLite браузере данных не видно (ФИО и телефоны), но при открытии в текстовом документе - контакты ЕСТЬ в теле файла... проблема в том что ФИО отдельно, Номера отдельно
Как восстановить бы данные? - или привести в соответствие ФИО - Телефон
п.с. iTunes скотина все контакты потер, восстанавливаю
в руках имеется инфа из нескольких бекапов iTunes, из которых телефоны и вытаскиваю, на всякий случай хочу сделать сейчас слив базы напрямую с iphone
ЗАранее всем спасибо!
Перебираю побайтово весь файл ищу ФИО и телефоны.... в принципе уже все нахожу... останеца потом разобраться с линками - какая фамилия кому соответствует
есть у кого информация по этому поводу? длина в байтах стандарты.... расположение
Заранее спасибо за любую помощь!
п.с. сделал експеримент - над подопытным АйФоном
В пустой книге сделал запсиь, заполнил поля, сохранил все
После этого вытащил телефонную книжку.... а в ней один хрен старые записи торчат
Осталось решить только один вопрос - ФИО и телефоны.... но эта информация ни разу не идет последовательно! Как происходит линк? какой одиннаковый байтовый код нужен?
Имеется вот такой код (ВТОРЫЕ СУТКИ ПОЧТИ БЕЗ СНА ПРИЧЕСЫВАТЬ КОД НЕ СТАЛ. ИЗВИНИТЕ ЗАРАНЕЕ
)
Код:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
;;;; инициализация переменных
Global $res = ""
Global $pos = 0
Global $info[1024]
Global $infoN[1024]
Global $supTmpStr = ""
Global $dctRu [2][1]
Global $dctDig [2][1]
#include <Array.au3>
#Include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=k:\form1.kxf
$Form1_1 = GUICreate("Form1", 1227, 455, 251, 291)
$grpDictWork = GUICtrlCreateGroup("Работа со словарем", 8, 8, 185, 105)
$btnReadDict = GUICtrlCreateButton("Считать шаблон словаря", 16, 24, 171, 25)
$btnRead = GUICtrlCreateButton("Анализ файла", 16, 56, 171, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$sbrStatus = _GUICtrlStatusBar_Create($Form1_1)
Dim $sbrStatus_PartsWidth[4] = [700, 820, 920, -1]
_GUICtrlStatusBar_SetParts($sbrStatus, $sbrStatus_PartsWidth)
_GUICtrlStatusBar_SetText($sbrStatus, "Программа для поиска данных в БД Адресной книги iPhone Apple", 0)
_GUICtrlStatusBar_SetText($sbrStatus, "Код символа", 1)
_GUICtrlStatusBar_SetText($sbrStatus, "Символ", 2)
_GUICtrlStatusBar_SetText($sbrStatus, "Позиция", 3)
$edtInfo = GUICtrlCreateEdit("", 200, 16, 481, 377, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
$edtInfoN = GUICtrlCreateEdit("", 688, 16, 521, 377, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
$edtTmp = GUICtrlCreateEdit("", 8, 120, 185, 273, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnReadDict
WriteDict ()
Case $btnRead
Panaceya ()
EndSwitch
WEnd
;;;; Раздел функций
;;;; Анализ таблицы
Func Panaceya ()
;;;; инициализация переменных
;Local $dctEn [2][1]
Local $i = 1 ;;;; Глобальный Счетчик блоков инфы
Local $q = 1, $w = 1 ;;;; Счетчики в циклах
;;;; Грузим Словари символов
$dctRu = LoadDict (@WorkingDir & "\Dict\RusDict.txt")
$dctDig = LoadDict (@WorkingDir & "\Dict\DigitDict.txt")
;$dctEn = LoadDict (@WorkingDir & "\Dict\EnDict.txt")
;_ArrayDisplay ($dctRu)
;_ArrayDisplay ($dctDig)
;_ArrayDisplay ($dctEn)
;Dim $fnmBD = FileOpenDialog ("Необходимо выбрать файл с базой данных телефонов", @WorkingDir & "\", "All (*.*)")
Dim $fnmBD = @WorkingDir & "\BD\source2.txt"
$hBD = FileOpen ($fnmBD, 16)
$hBDn = FileOpen ($fnmBD)
;;;; ПОЕХАЛИ
Info ("Идет поиск", 0, 0, 0)
While 1
$info[$i] = FileRead ($hBD, 1024)
$infoN[$i] = FileRead ($hBDn, 1024)
If @error <> -1 Then
Info ("Идет поиск", 0, 0, $i)
;Подрезаем строку спереди - убираем 0х
$supTmpStr = StringTrimLeft ($info[$i], 2)
While StringLen ($supTmpStr) > 0
;;;; ПЕРЕБОР РУССКОГО АЛФАВИТА
for $q = 1 to $dctRu[0][0]
If StringInStr ($supTmpStr, "00") = 1 Then
ExitLoop
EndIf
$pos = StringInStr ($supTmpStr, $dctRu[$q][1])
;;;;;Если нужный символ не первый - тогда в жопу!
If $pos = 1 Then
$res = $res & $dctRu[$q][0]
$supTmpStr = StringTrimLeft ($supTmpStr, 4)
$res = $res & WordComplete ()
_GUICtrlEdit_SetText ($edttmp, $res & @crlf & _GUICtrlEdit_GetText ($edtTmp))
$res = ""
ExitLoop
EndIf
Next
;
;;;; ПЕРЕБОР ЦифроСимвольного алфавита
;for $q = 1 to $dctDig[0][0]
; $pos = StringInStr ($supTmpStr, $dctDig[$q][1])
; ;MsgBox (0, "найдена цифра", $supTmpStr)
; ;;;;;Если нужный символ не первый - тогда в жопу!
; If $pos = 1 Then
; $res = $res & $dctDig[$q][0]
; $supTmpStr = StringTrimLeft ($supTmpStr, 1)
; MsgBox (0, "найдена цифра", $res)
; $res = $res & WordCompleteDig ()
; ;MsgBox (0, "найдена цифра", $res)
; _GUICtrlEdit_SetText ($edtTmp, $res & @CRLF & _GUICtrlEdit_GetText ($edtTmp))
; $res = ""
; ExitLoop
; EndIf
;Next
$supTmpStr = StringTrimLeft ($supTmpStr, 1)
WEnd
$i = $i +1
Else
;MsgBox (64, "Hello", "Поиск завершен")
ExitLoop
EndIf
;MsgBox (64, "Результаты поиска", $res)
WEnd
EndFunc
;;;; рекурсия для завершения словая
Func WordComplete ()
Local $result = ""
Local $metka = 0
While 1
For $w = 1 to $dctRu[0][0]
$pos = StringInStr ($supTmpStr, $dctRu[$w][1])
If $pos = 1 Then
;MsgBox (64, "Результаты поиска", $supTmpStr)
$result = $result & $dctRu[$w][0]
$metka = 1
$supTmpStr = StringTrimLeft ($supTmpStr, 4)
ExitLoop
EndIf
Next
If $metka = 1 Then
$metka = 0
Else
ExitLoop
EndIf
WEnd
Return $result
EndFunc
Func WordCompleteDig ()
Local $result = ""
Local $metka = 0
While 1
For $w = 1 to $dctDig[0][0]
$pos = StringInStr ($supTmpStr, $dctDig[$w][1])
If $pos = 1 Then
;MsgBox (64, "Результаты поиска", $supTmpStr)
$result = $result & $dctDig[$w][0]
$metka = 1
$supTmpStr = StringTrimLeft ($supTmpStr, 1)
ExitLoop
EndIf
Next
If $metka = 1 Then
$metka = 0
Else
ExitLoop
EndIf
WEnd
Return $result
EndFunc
Func LoadDict ($fnmDict)
Local $dctTmp[100][2]
Local $i = 0
Local $strTmp
$hTmp = FileOpen ($fnmDict, 256)
While 1
$strTmp = FileReadLine ($hTmp)
If @error <> -1 Then
$i = $i + 1
;MsgBox (64, "test", $strTmp)
$aTemp = StringSplit ($strTmp, "|")
;_ArrayDisplay ($aTemp)
$dctTmp[$i][0] = $aTemp[1]
$dctTmp[$i][1] = $aTemp[2]
Else
ReDim $dctTmp[$i+1][2]
ExitLoop
EndIf
WEnd
$dctTmp[0][0] = $i
;_ArrayDisplay ($dctTmp)
Return $dctTmp
EndFunc
;;;; отображение информации
Func Info (Const $msg, Const $scode, Const $code, Const $currentnumber)
_GUICtrlStatusBar_SetText ($sbrStatus, $msg, 0, 0)
_GUICtrlStatusBar_SetText ($sbrStatus, $scode, 1, 0)
_GUICtrlStatusBar_SetText ($sbrStatus, $code, 2, 0)
_GUICtrlStatusBar_SetText ($sbrStatus, $pos, 3, 0)
_GUICtrlEdit_SetText ($edtInfo, $info[$currentnumber])
_GUICtrlEdit_SetText ($edtInfoN, $infoN[$currentnumber])
GUISetState (@SW_Show)
EndFunc
;;;; работа со словарем
Func WriteDict ()
#cs
Открываем один и тот же файл источника словаря, только один просто
в режиме на чтение, другой в бинарном режиме. Результат записываем в словарь
который потом можно будет при старте программы загружать в массив
#ce
Local $fnmResFile1 = FileOpenDialog ("Необходимо выбрать файл Алфавита", @WorkingDir & "\alphabet\","All (*.*)")
Local $fnmResFile2 = $fnmResFile1
Local $fnmDict1 = FileSaveDialog ("Необходимо выбрать файл словаря", @WorkingDir & "\Dict\","All (*.*)")
If StringInStr ($fnmDict1, ".txt") = 0 Then
$fnmDict1 = $fnmDict1 & ".txt"
EndIf
$hDict1 = FileOpen ($fnmDict1, 2)
$hResFile1 = FileOpen ($fnmResFile1)
$hResFile2 = FileOpen ($fnmResFile2, 16)
While 1
$strNorm = FileRead ($hResFile1, 1)
$strBin = FileRead ($hResFile2, 1)
If @error <> -1 Then
;MsgBox (64, "Опа", $strNorm & "|" & $strBin)
$strBin = StringTrimLeft ($strBin, 2)
FileWriteLine ($hDict1, $strNorm & "|" & $strBin)
Else
ExitLoop
EndIf
WEnd
FileClose ($hDict1)
FileClose ($hResFile1)
FileClose ($hResFile2)
EndFunc
;Func undChar ()
; ToolTip ("Код - " & $str, 0, 0, "Информация о символе", 1)
; FileWrite ($fRes, $Char & "|" & $str & ";")
; Sleep (500)
;EndFunc
;;;; Код
#cs
Func WriteRes (Const $Char)
MsgBox (64, "Str", $Char & " - " & $str)
FileWrite ($fRes, $Char & "|" & $str & ";")
EndFunc
#ce
есть файл - база контактов с айфона, с моим контактом....
Вопрос! если один контакт в принципе ничего сложного.... но что делать если к одной учетке привязано два или более телефонов
Тоесть как по удаленным данным.... привести их в соответствие: ФИО - Телефон, email, второй телефон и т.д
ЗАРАНЕЕ спасибо всем
Добавлено:
Сообщение автоматически объединено:
прикреплю словари
