Probleme de pascal [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 23-09-2002 à 12:30:09
procedure toto; |
A tester
Marsh Posté le 23-09-2002 à 12:35:00
remplace
PathBuffer := '\\' + FRemoteAddress + '\Système\Temps';
par
StrCopy(PathBuffer, PChar('\\' + FRemoteAddress + '\Système\Temps');
Marsh Posté le 23-09-2002 à 12:35:42
vttman2 a écrit a écrit : var PathBuffer: String [MAX_PATH + 1]; |
ça fait une ShortString au lieu d'AnsiString/LongString, mais ça donnera pas un PChar
Marsh Posté le 23-09-2002 à 12:36:42
[SDF]Poire a écrit a écrit : P := @PathBuffer; P := PChar('\\' + FRemoteAddress + '\Système\Temps'; AppelAPI(truc, bidule, PathBuffer); |
heu là PathBuffer ne contiendra jamais les chaînes voulues, à moins d'un miracle
Marsh Posté le 23-09-2002 à 12:37:05
Glups j'avais lu un peu vite,
je suis à coté de la plaque ...
Je retire mon précédent message !
Marsh Posté le 23-09-2002 à 12:55:04
pour le StrCopy (qui est la seule solution correcte ) si ça marche pas c'est peut-être que la variable passée est pas bonne
Y a aussi StrPCopy qui accepte une variable de type string
essaie:
P: PChar;
P := GetMem(P, MAX_PATH + 1);
StrPCopy(P, '\\' + FRemoteAddress + '\Système\Temps';
AppelAPI(truc, bidule, P);
...
FreeMem(P); // quand t'as plus besoin du buffer
Marsh Posté le 23-09-2002 à 12:57:10
viiz a écrit a écrit : mais ca ca compile pas
|
heu je viens de relire le truc, FRemoteAddress est de quel type ?
si tu fais
PathBuffer := '\\' + PChar(FRemoteAddress) + '\Système\Temps d''activité système'
ça marche ?
Marsh Posté le 23-09-2002 à 13:05:54
ReplyMarsh Posté le 23-09-2002 à 13:18:22
ça dépend... tu fais un RaiseLastOSErrror il te balance une exception avec une description claire de la dernière erreur normalement
Marsh Posté le 23-09-2002 à 13:26:59
antp a écrit a écrit : heu là PathBuffer ne contiendra jamais les chaînes voulues, à moins d'un miracle |
Ah
Pointeur & Pascal & moi =
Marsh Posté le 23-09-2002 à 14:25:24
[SDF]Poire a écrit a écrit : Ah Pointeur & Pascal & moi = |
c'est pas une question de pointeur, c'est que t'assigne à P le buffer puis t'assigne un autre truc à P, mais jamais t'assigne le truc au buffer
Marsh Posté le 23-09-2002 à 14:49:23
l'id C T de faire pointer P vers le buffer
genre
p = &ca;
*p = "bloub";
en C
C ptet pas exactement ça même en C, ça fait longtemps que G pas pratiqué
Marsh Posté le 23-09-2002 à 14:55:03
mwouais je m'en doutais, mais c'était un peu raté
p^ := ...
alors
mais je suis pas sûr que ce soit accepté et/ou bien interprété par le compilo..
en Pascal vaut mieux pas trop jouer avec ce genre de choses je crois
Marsh Posté le 23-09-2002 à 14:59:04
antp a écrit a écrit : mwouais je m'en doutais, mais c'était un peu raté p^ := ... alors mais je suis pas sûr que ce soit accepté et/ou bien interprété par le compilo.. en Pascal vaut mieux pas trop jouer avec ce genre de choses je crois |
oué je C :-/
C domage
Marsh Posté le 23-09-2002 à 15:19:22
antp a écrit a écrit : mwouais je m'en doutais, mais c'était un peu raté p^ := ... alors mais je suis pas sûr que ce soit accepté et/ou bien interprété par le compilo.. |
non ça marche po...
p^ est de type char... (vu que pointeur sur char C assez logique)
Donc à priori on peut pas faire comme en C
Marsh Posté le 23-09-2002 à 12:27:16
Chui un peu limite en pascal la...
[pascal]procedure toto;
var
PathBuffer: array [0..MAX_PATH + 1] of Char;
begin
PathBuffer := '\\' + FRemoteAddress + '\Système\Temps'; error
...
...
AppelAPI(truc, bidule, PathBuffer);
end;[/pascal]
Ce code ne compile pas car pathbuffer de type array et ma chaine de type string sont incompatibles. Je suis obligé de garder le tableau de char car je fais un appel API par la suite.
Comment faire pour que ce code tourne ?
J'ai pas de Pascal sous la main mais ...
Essaye :
var
PathBuffer: String [MAX_PATH + 1];