/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Hvordan for jeg en String overført til et ~
Fra : Michael [2800]


Dato : 03-08-03 18:30

Hvordan for jeg et Edit1.Text felt smidt over i et char array?

Det her er noget jeg har "scoret" fra nettet og der overføres et char array
til en string og det virker fint, men jeg er interesseret i at fører den
anden vej.

type
TID = packed record
title: array[0..29] of char;
end;


TID.title := edTitle.Text;


/md



 
 
Harald (03-08-2003)
Kommentar
Fra : Harald


Dato : 03-08-03 18:42

"Michael [2800]" <michael@mhcdan.dk> skrev i en meddelelse
news:3f2d467b$0$32515$edfadb0f@dread16.news.tele.dk...
> Hvordan for jeg et Edit1.Text felt smidt over i et char array?
>
> Det her er noget jeg har "scoret" fra nettet og der overføres et char
array
> til en string og det virker fint, men jeg er interesseret i at fører den
> anden vej.
>
> type
> TID = packed record
> title: array[0..29] of char;
> end;
>
>
> TID.title := edTitle.Text;

var
s : string;
PTegn : PChar:

begin
PTegn := PChar(s); // Konverterer fra string til Pchar
s := string(PTegn); // Konverterer fra Pchar til string
end;

Mvh
HK



Michael [2800] (03-08-2003)
Kommentar
Fra : Michael [2800]


Dato : 03-08-03 19:15

Jeg for følgende: [Error] Unit1.pas(99): Incompatible types: 'Array' and
'PChar'
når jeg skriver

type
TID = packed record
title: array[0..29] of char;
end;

TID.title := PChar( edTitle.Text );


Der er i øvrigt tale om Delphi 4, hvis det skulle have nogen betydning.


/md





Harald (03-08-2003)
Kommentar
Fra : Harald


Dato : 03-08-03 19:31

"Michael [2800]" <michael@mhcdan.dk> skrev i en meddelelse
news:3f2d5117$0$32473$edfadb0f@dread16.news.tele.dk...
> Jeg for følgende: [Error] Unit1.pas(99): Incompatible types: 'Array' and
> 'PChar'
> når jeg skriver
>
> type
> TID = packed record
> title: array[0..29] of char;
> end;
>
> TID.title := PChar( edTitle.Text );
>
>
> Der er i øvrigt tale om Delphi 4, hvis det skulle have nogen betydning.

Ok læste ikke dit indlæg godt nok, prøv med.

StrPCopy(TID.title,edTitle.Text);

Der findes også en masse andre functioner til at behandle null-termineret
strenge med.

Har du i øvrigt brug for at definere TID som du gør, kan du ikke bruge:

TID : PChar;

i stedet for.

Mvh
HK



Uffe Kousgaard (03-08-2003)
Kommentar
Fra : Uffe Kousgaard


Dato : 03-08-03 19:38

"Harald" <news@kroning.dk> wrote in message
news:3f2d54ea$0$97248$edfadb0f@dread12.news.tele.dk...
> Ok læste ikke dit indlæg godt nok, prøv med.
>
> StrPCopy(TID.title,edTitle.Text);

Pchar er IKKE det samme som "array of char". Prøv blot at tænke på
situationen, hvor alle arrayets pladser er udnyttet. Der er der ikke
nogen #0 til sidst og så virker typecastet ikke.

> Har du i øvrigt brug for at definere TID som du gør, kan du ikke
bruge:
>
> TID : PChar;

Det ville næppe være nogen god idé, hvis skidtet skal gemmes i en fil.

Hilsen
Uffe


Harald (03-08-2003)
Kommentar
Fra : Harald


Dato : 03-08-03 19:54

"Uffe Kousgaard" <uffe@routeware.dk> skrev i en meddelelse
news:3f2d5664$0$83059$edfadb0f@dtext01.news.tele.dk...
> "Harald" <news@kroning.dk> wrote in message
> news:3f2d54ea$0$97248$edfadb0f@dread12.news.tele.dk...
> > Ok læste ikke dit indlæg godt nok, prøv med.
> >
> > StrPCopy(TID.title,edTitle.Text);
>
> Pchar er IKKE det samme som "array of char". Prøv blot at tænke på
> situationen, hvor alle arrayets pladser er udnyttet. Der er der ikke
> nogen #0 til sidst og så virker typecastet ikke.

Nej, men StrPCopy virker udemærket med en "array of char".

> > Har du i øvrigt brug for at definere TID som du gør, kan du ikke
> bruge:
> >
> > TID : PChar;
>
> Det ville næppe være nogen god idé, hvis skidtet skal gemmes i en fil.

Næ men da han skrev at det med TID var´en var noget han havde "scoret" fra
nettet" så fik jeg den ide at han måske ikke var klar over PChar muligheden.
Hvis nu han vil have en streng overført til en "array of char" for at kunne
benytte strengen i en function der kræver en PChar så er det jo en hel del
lettere blot at skrive PChar(minStreng).

Mvh
HK



Uffe Kousgaard (03-08-2003)
Kommentar
Fra : Uffe Kousgaard


Dato : 03-08-03 20:39

"Harald" <news@kroning.dk> wrote in message
news:3f2d5a35$0$97174$edfadb0f@dread12.news.tele.dk...
> > Pchar er IKKE det samme som "array of char". Prøv blot at tænke på
> > situationen, hvor alle arrayets pladser er udnyttet. Der er der ikke
> > nogen #0 til sidst og så virker typecastet ikke.
>
> Nej, men StrPCopy virker udemærket med en "array of char".

Det var også den anden vej jeg tænkte på:

s := string(PTegn); // Konverterer fra Pchar til string

Den virker ikke, hvis PTegn er en array of char. Eller gør den? Det må
undersøges senere.

Hilsen
Uffe



Harald (03-08-2003)
Kommentar
Fra : Harald


Dato : 03-08-03 20:47


"Uffe Kousgaard" <uffe@routeware.dk> skrev i en meddelelse
news:3f2d64dd$0$83051$edfadb0f@dtext01.news.tele.dk...
> "Harald" <news@kroning.dk> wrote in message
> news:3f2d5a35$0$97174$edfadb0f@dread12.news.tele.dk...
> > > Pchar er IKKE det samme som "array of char". Prøv blot at tænke på
> > > situationen, hvor alle arrayets pladser er udnyttet. Der er der ikke
> > > nogen #0 til sidst og så virker typecastet ikke.
> >
> > Nej, men StrPCopy virker udemærket med en "array of char".
>
> Det var også den anden vej jeg tænkte på:
>
> s := string(PTegn); // Konverterer fra Pchar til string
>
> Den virker ikke, hvis PTegn er en array of char. Eller gør den? Det må
> undersøges senere.

Det virker fint men man skal selfølgelig huske at putte en #0 ind i sit
array for at afslutte.

Mvh
HK



Uffe Kousgaard (03-08-2003)
Kommentar
Fra : Uffe Kousgaard


Dato : 03-08-03 22:34

"Harald" <news@kroning.dk> wrote in message
news:3f2d66b7$0$97184$edfadb0f@dread12.news.tele.dk...
>
> Det virker fint men man skal selfølgelig huske at putte en #0 ind i
sit
> array for at afslutte.

Hvilket var lige præcis, hvad jeg startede med at skrive.


Michael [2800] (03-08-2003)
Kommentar
Fra : Michael [2800]


Dato : 03-08-03 20:05

> > Har du i øvrigt brug for at definere TID som du gør, kan du ikke
> bruge:
> >
> > TID : PChar;
>
> Det ville næppe være nogen god idé, hvis skidtet skal gemmes i en fil.

Hvorfor er det ikke godt at bruge PChar hvis det skal gemmes i en fil?


/md



Uffe Kousgaard (03-08-2003)
Kommentar
Fra : Uffe Kousgaard


Dato : 03-08-03 20:31

"Michael [2800]" <michael@mhcdan.dk> wrote in message
news:3f2d5cce$0$32478$edfadb0f@dread16.news.tele.dk...
>
> Hvorfor er det ikke godt at bruge PChar hvis det skal gemmes i en fil?

En pchar er en adresse på et stykke hukommelse, hvor din tekst står.
Hvis du kun gemmer adressen i din fil, har du ikke fået teksten med. Det
samme gælder med objekter og dynamiske arrays.

Hvis du er i tvivl, så prøv funktionen sizeof(dinvariabel), så ved du
hvor meget der vil blive skrevet til filen. Det vil være 4 i alle
ovennævnte situationer, da en pointer (=adresse) er en integer.

Hilsen
Uffe


Michael [2800] (03-08-2003)
Kommentar
Fra : Michael [2800]


Dato : 03-08-03 20:43

> En pchar er en adresse på et stykke hukommelse, hvor din tekst står.
> Hvis du kun gemmer adressen i din fil, har du ikke fået teksten med. Det
> samme gælder med objekter og dynamiske arrays.
Okay så kan jeg godt se at den ikke er så brugbar.
Takker!

/md



Michael [2800] (03-08-2003)
Kommentar
Fra : Michael [2800]


Dato : 03-08-03 19:43

> StrPCopy(TID.title,edTitle.Text);
Det virker og jeg takker mange gange.


/md



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409084
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste