|
| 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
| |
|
|