AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Pchar

Ein Thema von egal · begonnen am 8. Nov 2004 · letzter Beitrag vom 9. Nov 2004
Antwort Antwort
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#1

Problem mit Pchar

  Alt 8. Nov 2004, 10:58
Ich habe ein Problem, wenn ich so schreibe:
p := pchar('2'); oder so:
 p := pchar('a'); bleibt in diesen Fällen meine Pcar-Variable p ganz leer, aber warum, verstehe ich nicht so ganz oder muss unbedingt mein string mindestens zweistellig sein?
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#2

Re: Problem mit Pchar

  Alt 8. Nov 2004, 13:26
Hi,

Zitat von egal:
Ich habe ein Problem, wenn ich so schreibe:
p := pchar('2'); oder so:
 p := pchar('a'); bleibt in diesen Fällen meine Pcar-Variable p ganz leer, aber warum, verstehe ich nicht so ganz oder muss unbedingt mein string mindestens zweistellig sein?
Nein die String-Konstante muß nicht zweistellig sein. Nach deiner Zuweisung solle p auf eine Zeichenkette der Form '2'#0 bzw 'a'#0 zeigen. Wie prüfst du denn den Inhalt von p? Zeig mal etwas Code.

Ciao HeZa
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Problem mit Pchar

  Alt 8. Nov 2004, 14:02
Wenn du einer PChar-Variable direkt eine Konstante zuweist, brauchst du dieses Typecasting nicht.
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#4

Re: Problem mit Pchar

  Alt 8. Nov 2004, 14:35
So, hier ist bisschen Code
Delphi-Quellcode:
var p :pChar; chBsp : array of PChar;
    for i := 1 to 10 do begin
      p := pchar('2');
      Setlength(chBsp, length(chBsp) +1);
      chBsp[High(chBsp)] := p;
    end;
Wenn es einstellig ist, wird in meinem array nichts gespeichert, bekomme so ein Ergebnis:
100, text, , test.
Wo Leerzeichen ist, muss eigentlich 2 stehen.
Aber egal, wenn ich statt "2" eine Variable verwende, z.B.
cStr := '2'; p := pchar(cStr); dann funktioniert alles problemlos. Ich benutze da sowieso Variablen, nur für den Beispiel habe ich Constante genommen und hab plötzlich so was bekommen. Merkwürdig.
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: Problem mit Pchar

  Alt 8. Nov 2004, 17:04
Zitat von egal:
Wenn es einstellig ist, wird in meinem array nichts gespeichert, bekomme so ein Ergebnis:
100, text, , test.
Mit deinem Beispiel hast du diesen Text aber nicht erzeugt oder? Insbesondere würde mich interessieren wo und wie du dieses chBsp Array ausgibst?

Zitat von egal:
Aber egal, wenn ich statt "2" eine Variable verwende, z.B.
cStr := '2'; p := pchar(cStr); dann funktioniert alles problemlos.
Dann ist ja alles gut.

Zitat von egal:
Ich benutze da sowieso Variablen, nur für den Beispiel habe ich Constante genommen und hab plötzlich so was bekommen. Merkwürdig.
In der Tat, aber irgendwie kommt mir der ganze Code merkwürdig vor. Wieso benutzt du denn überhaupt PChars und nicht Strings? Mir ist auch noch völlig unklar wie du ein Array von PChars (und nicht etwa Chars) ausgibst. Würde mich nicht wunder wenn du bald eine Zugriffsverletzung hättest.
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#6

Re: Problem mit Pchar

  Alt 9. Nov 2004, 11:37
ok, shreibe noch bisschen mehr code :
Delphi-Quellcode:
var p :pChar; chBsp : array of PChar;
      p := pchar('text');
      Setlength(chBsp, length(chBsp) +1);
      chBsp[High(chBsp)] := p;
      p := pchar('2');
      Setlength(chBsp, length(chBsp) +1);
      chBsp[High(chBsp)] := p;
      p := pchar('100');
      Setlength(chBsp, length(chBsp) +1);
      chBsp[High(chBsp)] := p;
In meinem Array wird so gespeichert: 'text', , '100'
Mein Array benutze ich als Übergabeparameter für Dll-Funktion, deswegen Array of PChar, quasi so: c:=myfunc(chBsp);
Und in der Dll sieht es so aus:
Delphi-Quellcode:
 myfunc(chBsp): integer;
...
cStr := string(chBsp[0];
...
Und Zugriffsverletzung hatte ich auch , aber jetzt funktioniert eigentlich ganz gut und ich habe mittlerweile schon neue Aufgabe gekriegt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz