oui c'est bien sur InfoPointRestauration.szDescription := RestoreName;
qu'est l'erreur.
Je vais tester ta solution, j'espère que cette fois c'est la bonne
Encore merci
oui c'est bien sur InfoPointRestauration.szDescription := RestoreName;
qu'est l'erreur.
Je vais tester ta solution, j'espère que cette fois c'est la bonne
Encore merci
désolé marche pas plus !
Voici donc le code complet pour celui qui parviendra au sommet de mon estime :-)
Bon courage !
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 procedure TForm1.mnuCreateSysRestoreClick(Sender: TObject); // Crée et annule un point de restauration en cas d'erreur procedure Affiche(Texte:String); begin StatusBar1.Panels[2].text := Texte+' Données du point de restauration :' + crlf + 'Numéro de séquence : ' + Format('%d', [SMgrStatus.llSequenceNumber]) + crlf + 'Statut: ' + Format('%u', [SMgrStatus.nStatus]) end; begin // Initialise l'enregistrement InfoPointRestauration.dwEventType := BEGIN_SYSTEM_CHANGE; InfoPointRestauration.dwRestorePtType := APPLICATION_INSTALL; InfoPointRestauration.llSequenceNumber := 0; {C'est ici ! Réussir : InfoPointRestauration.szDescription := RestoreName; RestoreName := InputBox('Point de restauration', 'Entrez un nom', 'Nouveau point de restauration'); } InfoPointRestauration.szDescription := 'Nouveau point de restauration'; if (SRSetRestorePointA(@InfoPointRestauration, @SMgrStatus)) then begin Affiche('Configure le point de restauration.'); // Configuration pour annuler le point de restauration précédent. InfoPointRestauration.dwEventType := END_SYSTEM_CHANGE; {Pour annuler le point de restauration actuel:} //InfoPointRestauration.dwRestorePtType := CANCELLED_OPERATION; // Termine les modifications systéme en passant le numéro de séquence // recu lors du premier appel à l'API SRSetRestorePoint. InfoPointRestauration.llSequenceNumber := SMgrStatus.llSequenceNumber; // Notifie le système que les modifications sont terminée et // que c'est la fin du point de restauration. if not SRSetRestorePointA(@InfoPointRestauration, @SMgrStatus) then begin Affiche('Ne peut pas positionner la fin du point de restauration.'); Exit; end end; end;
hello,
le code suivant fonctionne chez moi. si il ne marche pas chez toi, on regardera la manière dont tu déclares InfoPointRestauration.
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 procedure TForm1.Button1Click(Sender: TObject); var InfoPointRestauration: RESTOREPOINTINFO; RestoreName : String; begin // Initialise l'enregistrement InfoPointRestauration.dwEventType := BEGIN_SYSTEM_CHANGE; InfoPointRestauration.dwRestorePtType := APPLICATION_INSTALL; InfoPointRestauration.llSequenceNumber := 0; RestoreName := InputBox('Point de restauration', 'Entrez un nom', 'Nouveau point de restauration'); If Length(restoreName) > Length(InfoPointRestauration.szDescription) then // empêche la recopie d'un string supérieur à MAX_DESC SetLength(restoreName, Length(InfoPointRestauration.szDescription)); FillChar(InfoPointRestauration.szDescription[0], Length(InfoPointRestauration.szDescription), 0); // Initialise les valeurs du tableau move(RestoreName[1], InfoPointRestauration.szDescription[0], length(restoreName)); // recopie restorename dans le tableau end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager