newh = new char [len_newh]
bool ACG_IMPORT WORD97_ChangeString(ObCharFld &RS, ObCharFld &OldHeader, ObCharFld &OldSeparator, ObCharFld &NewHeader, ObCharFld &NewSeparator) { int len_olds; int len_newh = 10240; int len_news; int n; char *oldh = OldHeader.GetText(); char *olds = OldSeparator.GetText(); char *newh; char news[128]; if (!Is_FCT_loaded(Convert)) Convert = (TConvert)GetProcAddress(word_hm, "Convert"); if (!Is_FCT_loaded_Msg(Convert)) return (false); /* verification des parametres pour eviter un SEGVIO */ if (!NewSeparator.GetText() || !oldh || !olds || (len_olds strlen(olds)) 0 || (len_news Convert(news, NewSeparator.GetText())) 0 || strncmp(oldh, olds, len_olds)) { RS.SetText("ERR"); return false; } oldh += len_olds; // suppression du separateur en debut de chaine /* allocation d'une chaine pour le nouvel header */ newh = new char [len_newh]; n = 0; newh[n++] = '"'; while (*oldh) { if (!strncmp(oldh, olds, len_olds)) { /* C'est un separateur ! => remplacer ce bazar par le nouveau separateur */ strcpy_s(&newh[n], len_newh, news); /* remplace par le nouveau separateur */ while (newh[n]) n++; /* se positionne a la fin */ oldh += len_olds; /* deplacement dans la chaine */ } else /* C'est un caractere comme un autre */ newh[n++] = *oldh++; /* petit test pour eviter que le buffer soit trop petit */ if (n >= len_newh - len_news - 1) { char *tmp; int new_len; new_len = len_newh * 2; tmp = new char [new_len]; memcpy(tmp, newh, len_newh); delete newh; // dbg newh = tmp; len_newh = new_len; } } /* fermeture du nouvel header */ newh[n++] = '"'; newh[n] = '\0'; NewHeader.SetText(newh); RS.SetText(" "); return true; }
strcpy_s(&newh[n], len_newh, news)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionInstance_s *FindInstance(long I) { Instance_s *Instance; for (Instance = InstanceList; Instance && (Instance->Instance != I); Instance = Instance->Next); return Instance; }