Bonjour,
Je migre (réécrit) un petit logiciel VB6 en C#. Je m'attarde actuellement à pouvoir lire les fichiers data existant fait dans une stucture binaire VB6 :
et das le .Load :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 nNumFile = FreeFile Open sFileTemp For Binary As #nNumFile If LOF(nNumFile) > 0 Then Get #nNumFile, , lLen lSeek = Seek(nNumFile) Set macollection = New Collection For i = 1 To lLen Set oObjet = New cMaClasse oObjet.Load nNumFile, lSeek macollection.Add ass Next End If Close #nNumFile
et dans la classe d'oFont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Sub Load(ByVal numFile As Long, ByRef lSeek As Long) Get #numFile, , ID 'long Get #numFile, , CoefMO 'single Get #numFile, , TypeAss 'Integer 'Lecture chaine Dim lLen As Long Get #numFile, , lLen 'Longueur à lire If lLen > 0 Then Code = Space$(lLen) Get #numFile, , Code End If 'Sous classe oFontText.Load numFile lSeek = Seek(numFile) End Sub
Voilà pour planter le décor et mon anguoisse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Sub Load(ByVal numFile As Long) Dim lLen As Long Dim i As Integer Dim lValue As Long Dim nLocalVersion As Integer Get #numFile, , nLocalVersion Get #numFile, , iBold Get #numFile, , iItalic Get #numFile, , iUnderline Get #numFile, , iStrikethrough Get #numFile, , iSize Get #numFile, , iWeight Get #numFile, , iCharSet Get #numFile, , iColor Dim i As Long Get #hFile, , i If i > 0 Then sText = Space$(i) Get #hFile, , iFontName End If End Sub
En C# c'est assez différent me semble-t-il...
J'ai commencé comme cela mais déjà je bloque :
et la classe oFont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public void Load(string fileName) { FileStream stream = new FileStream(fileName, FileMode.Open); BinaryReader reader = new BinaryReader(stream); int value = reader.ReadInt32(); for (int i = 0; i < value; i++) { maClasse oObjet = new maClasse(); ass.ID = reader.ReadInt32(); ass.CoefMO = reader.ReadSingle(); ass.TypeAss = reader.ReadInt16(); //là ca me semble mauvais comme code : lLen = reader.ReadInt32(); if (lLen > 0) { string sSt = new String(' ', lLen); ass.Code = reader.ReadString(); } //et là pire : Classes.Font oFont = new Classes.Font(); oFont.Load(reader); (...) } }
Je suis preneur de toutes remarques !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 namespace Classes { class Font { private short mVersion=1 ; string iFontName="arial"; bool iBold =false; bool iItalic ; bool iUnderline; bool iStrikethrough ; double iSize=8.25; short iWeight; short iCharSet; int iColor=0; public void Load(BinaryReader reader) { short nLocalVersion= reader.ReadInt16(); iBold=reader.ReadBoolean(); iItalic=reader.ReadBoolean(); iUnderline=reader.ReadBoolean(); iStrikethrough=reader.ReadBoolean(); iSize = reader.ReadDouble(); iWeight= reader.ReadInt16(); iCharSet= reader.ReadInt16(); iColor = reader.ReadInt32(); //Get #hFile, , i //If i > 0 Then // sText = Space$(i) // Get #hFile, , sText // LoadString = Crypte(sText) //End If int lLen = reader.ReadInt32(); if (lLen > 0) { string sText = new String(' ', lLen); iFontName = reader.ReadString(); } } } }au secours...
![]()
Partager