Die Programmiersprache Ruby

Blog| Forum| Wiki  

Kleiner Konverter für Adressbücher von Outlook nach Pegasus. Vielleicht deshalb ganz nett, weil hier viel mit binären Files gemacht wird.


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
#Konvertiere Mailadressenliste aus Outlook in Pegasus
#-----------------------------------------------------

# (Nur Vorname, Nachname und Emailadresse, aber leicht erweiterbar.)

# Outlook-Adressbuch wurden in die Datei kontakte.csv exportiert.

# Der Output wird in die Pegasus-Adressbücher a.pm! und a.pmr geschrieben.
# Diese müssen dann über ein schon existierendes Adressbuch kopiert werden.
# (Falls nicht vorhanden, vorher ein Dummy-Adressbuch in Pegasus anlegen.)


vorname=1
nachname=3
emailadresse=55

VORNAME=0
NACHNAME=1
EMAIL=2


list=Array.new
@c=0

@zeros="#"
#@zeros[0]=0


def writeword(buf,size,word)
  buf1=word
  buf2=@zeros*(size-buf1.size())
  buf1+=buf2
  buf+=buf1
  #if (@c==1); print buf1.size()," ",buf1; STDIN.gets; end
  buf
end

#Lese alle Mailadressen
File.open("kontakte.csv","r") do |ifi|
k1=0
while (!ifi.eof)
  s=ifi.gets.split(/;/)
  rec=Array.new
  rec[VORNAME]=s[vorname]
  rec[NACHNAME]=s[nachname]  
  rec[EMAIL]=s[emailadresse]
  print rec[VORNAME]," ",rec[NACHNAME],"\n"
  #STDIN.gets
  list<<rec
  k1+=1
end end

#Schreibe pmr-File
#a. Schreibe Header
buf_pmr=""
buf_pmi=""
buf_pmr=writeword(buf_pmr,130,"all")
#b. Schreibe Listen-Eintraege
k=0
list.each{|x|
  n=""
  n=x[VORNAME]+" "+x[NACHNAME]
  puts n
  buf_pmr=writeword(buf_pmr,340,n)
  #print buf_pmr.size()," ",buf_pmr
  buf_pmr=writeword(buf_pmr,458-340,x[EMAIL])
  buf1=0.chr*16
  buf1[14]=(k%256).chr
  buf1[13]=((k/256).to_i).chr
  buf_pmi+=buf1
  #if (k==10); puts buf1[14..14]
    #@c=1; STDIN.gets; end
  buf_pmi=writeword(buf_pmi,48,n)
  #if (k==10); puts buf_pmi.size();   
    #File.open("log3.txt","w") do |ofi| ofi.print buf_pmi; end
    #@c=1; STDIN.gets; end
  k+=1
}


buf_pmr.gsub!(/#/,0.chr)
buf_pmi.gsub!(/#/,0.chr)
File.open("a.pmr","wb") do |ofi| ofi.print buf_pmr; end
File.open("a.pm!","wb") do |ofi| ofi.print buf_pmi; end


Diskusssion