Conversion 4D Write vers 4D Write Pro

Product :4D - 4D Server
OS : Windows
Version V17.3.

Bonjour à tous,
Nous sommes en train de travailler sur 4D Write Pro : avec conversion des champs 4D Write -> 4D Write Pro.
Plusieurs questions :
1- Première conversion sur un data les champs 4D Write Pro sont corrects.
Sur un autre fichier de données, certains documents au lieu d’être sur 19 cm de large (Portrait), se retrouvent sur 41 cm de large …(plutôt du paysage :cry:…) : y a t-il une explication à cela ?
Remarque : avant de convertir les champs 4DWrite, nous effectuons une passe dans laquelle nous restockons les champs 4D Write dans la dernière version (V17.3 32bits).

2- Y a t-il une commande permettant de savoir si mon document 4D Write Pro est vide (ni texte, ni image).

Merci d’avance pour votre collaboration.

Bonjour Sylvie,


En ce qui concerne la 1ere question (41cm au lieu de 19cm) c’est étrange et ca ressemble a un bug.
Si vous pouviez nous envoyer un exemple ça nous aiderait à comprendre le problème.

Pour la remarque que vous faites concernant le re-stockage, c’est parfait :slight_smile:


Pour la seconde question, c’est assez facile

Pour le texte : WP GET TEXT -> renvoie le text (brut) du body du document (pas le texte des entetes ni pieds). Pour lire le text des entêtes et pieds de page, utiliser la même commande mais avec comme cible les entetes ou pieds)

pour les images : WP GET ELEMENTS renvoie une collection du type demandé (wk type image, wk type image inline, wk image anchored)
Si la collection est vide ($col.length = 0) alors le doc ne contient pas d’images

Cordialement,
Roland Lannuzel

Voici ce que j’obtiens … voir le fichier inclus.

[]33889453;“Your comment here…”[/]

Je regarde pour la collection …

Merci à vous.

Magali

Voici ma méthode qui teste si mon document est vide :
$range:=WP Créer plage($1->;wk start text;wk end text)
$vText:=WP Lire texte($range;wk expressions as value)

Si (Longueur($vText)=0)  //zone 4DW vide
	C_COLLECTION($Collection)
	$Collection:=WP Lire éléments($1->;wk type image)
	Si ($Collection.length=0)
		$0:=Vrai
	Fin de si 
Fin de si 

$1 est un pointeur sur mon champ objet 4DWrite pro.
4D me trouve une erreur d’exécution sur la ligne Si ($Collection.length=0) : Les arguments de cette opération ne sont pas compatibles.

N’ayant jamais travaillé avec les collections peut-être que c’est moi qui programme mal !!!

Merci d’avance.
Magali

Une image ça aide… !

C’est parce que vous êtes en mode d’affichage “embedded” et non pas en mode “page”

Pour changer ça, vous pouvez le faire soit via le menu contextuel (s’il n’a pas été désactivé) soit via la “property list” en mode developement.

Roland Lannuzel

j’aimerais l’écrire en très gros pour que tout le monde puisse lire :

Il est inutile de passer un pointeur sur un objet ! Passer l’objet directement !
Un document 4D Write Pro c’est “juste” un objet, c’est à dire déjà une référence.

Souvent les développeurs pensent qu’un objet c’est GROS… un peu comme un BLOB…
Rien n’est plus faux.
Un objet c’est “comme” un pointeur :slight_smile:

// code non testé, juste tappé pour exemple //

c_object ($1)
c_object($document)

$document:=$1 // juste pour la lisibilité, l’objet n’est PAS dupliqué, il y a juste deux références maintetant…

$text:= WO Get text($document)

(…)

C_COLLECTION($collection)
$collection:=WP Lire éléments($document;wk type image)

À ce stade, $collection doit contenir entre 0 et n éléments…

(…)

Roland Lannuzel

Je prends bien note pour les objets : à mettre en pratique très prochainement.
Par contre du côté de la collection toujours bloquée :
$collection.length = 0 me provoque une erreur d’exécution… :cry:

Auriez vous une idée ?

Nous sommes en V17.3 32bits pour les clients et 64bits en serveur : le problème pourrait-il venir de là ?

Encore un grand merci pour vos réponses.

Magali.