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