|
| Strenge i Delphi Fra : ~*~ Mivi ~*~ |
Dato : 14-12-00 09:13 |
|
Hej
Jeg sidder lige nu og har et skide irriterrende problem.
Jeg har lavet en procedure i Delphi, som ser ud som følger:
Procedure SletBlanke (VAR S : String);
Når jeg kalder denne procedure, fører jeg en vilkårlig streng over til
denne.
Det kan f.eks. være en variabel af typen STRING[10].
Nu siger compileren til mig, at det kan jeg ikke da de ikke er af type.
I Turbo Pascal 7.0 til MS-DOS kan man slå et compiler directiv fra [{$V-}],
som slår dette check fra.
Det har jeg prøvet i delphi, men det hjalp ikke !!
Jeg har ligeledes prøve at fjerne STRICT VAR_CHECK under Project, Options,
Compiler.
Ingen effekt.
Gør jeg noget forkert ??
Michael
| |
Bjørn Johansen (16-12-2000)
| Kommentar Fra : Bjørn Johansen |
Dato : 16-12-00 13:59 |
|
Dit problem er, at typen String er en pointer til en streng (hvorved du ikke
bruger 256 bytes lagerplads) men kun adressen + strengens længde). Denne
type er ikke sammenlignelig med en String[nn] som har fast lagerallokering,
og selvom du fik det oversat ville med medføre stakfejl når du afviklede
koden.
Prøv i stedet at definere rutinen som
Procedure SletBlanke(var S);
var
aS : String[255] absolute S;
begin
osv. (og husk ikke at adressere ud over strengens faktiske længde)
men du må IKKE kalde proceduren med en parameter af typen String, kun
String[nn].
Du bør i øvrigt bruge standardtypen String noget mere, den er
pladsbesparende medmindre du arbejder med meget korte strenge.
Med venlig hilsen
Bjørn Johansen
~*~ Mivi ~*~ skrev i meddelelsen ...
>Hej
>
>Jeg sidder lige nu og har et skide irriterrende problem.
>
>Jeg har lavet en procedure i Delphi, som ser ud som følger:
>
>
>Procedure SletBlanke (VAR S : String);
>
>
>Når jeg kalder denne procedure, fører jeg en vilkårlig streng over til
>denne.
>Det kan f.eks. være en variabel af typen STRING[10].
>
>Nu siger compileren til mig, at det kan jeg ikke da de ikke er af type.
>
>I Turbo Pascal 7.0 til MS-DOS kan man slå et compiler directiv fra [{$V-}],
>som slår dette check fra.
>
>Det har jeg prøvet i delphi, men det hjalp ikke !!
>
>Jeg har ligeledes prøve at fjerne STRICT VAR_CHECK under Project, Options,
>Compiler.
>Ingen effekt.
>
>Gør jeg noget forkert ??
>
>Michael
>
>
>
| |
|
|