AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Daten in PChar übergeben...

Ein Thema von Lui2003 · begonnen am 2. Mär 2004 · letzter Beitrag vom 2. Mär 2004
Antwort Antwort
Lui2003

Registriert seit: 2. Mär 2004
4 Beiträge
 
#1

Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 12:13
Hallo Zusammen,

ich denke ich sitze gerade auf der Leitung aber ich komme nicht auf die Lösung meines ansich sehr trivialen Problems

Also, ich habe folgenden Code:
PChar('DSN=Meine Verbindung'#0'Description=Ein Text'#0'Server=192.168.0.1'#0'Database=TestDB'#0'User=Wortmann'#0'Password=geheim'#0) So und nun möchte ich die Werte für DSN, Descrition etc. nicht fest im Code "verbraten", sondern variabel meinen Wünschen anpassen. Wie bekomme ich nun den Wert eines Eingabefeldes auf z.B. DSN? Wie kann ich "DSN" im PChar etwas zuweisen?

Vielleicht liegts an der Erkältung, ich weiss es nicht, aber zur Zeit sehe ich nur Baum ... Danke schonmal für Eure Hilfe!

Gruss
Lui
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 12:24
zum Beispiel
myCString:=PChar(Edit1.Text); oder
myCString:=StrPCopy(myCString,Edit1.Text); ersteres favorisiere ich, da es weniger zu tippen ist und Du nicht unbedingt eine PChar Variable brauchst

Nach nochmaligem Überlegen - warum nicht nur:
Delphi-Quellcode:
s:='Text1='+Edit1.Text+#0+'Text2='+Edit2.Text;
myCString:=PChar(s);
Du wirst bloß mit dem Zeichen #0 ein Problem bekommen, da PChar nullterminierte Strings sind und somit der String bloß bis zum ersten #0 ausgewertet werden wird - nun ich kann mich irren

ciao

Marco
Marco Warm
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 12:34
PChar werden in der Regel durch die Nullterminierung abgeschlossen. Es gibt aber auch Anwendungsfäl´le, z.B. in der WinAPI, wo die Länge mitübergeben wird und deshalb der PChar nullterminiert sein darf. Oder die 0 dient als Trennzeichen und der string wird abgeschlossen durch zwei Nullen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 12:37
@Chewie:

Thx for that information
Marco Warm
  Mit Zitat antworten Zitat
Lui2003

Registriert seit: 2. Mär 2004
4 Beiträge
 
#5

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 13:19
Schön zu sehen das bei Euch auch ein kleiner Knoten entsteht, aber wahrscheinlich liegt es an meiner mangelnden Beschreibung.

Also ich möchte das:
PChar('DSN=Meine Verbindung'#0'Description=Ein Text'#0'Server=192.168.0.1'#0'Database=TestDB'#0'User=Wortmann'#0'Password=geheim'#0) schon so lassen, nur soll z.B. "DSN=Meine Verbindung" nicht fest darin stehen. Ich möchte dem "DSN" etwas variables zu weisen können oder auch das "Server=192.168.0.1" mit einer anderen IP-Adresse versehen können.

Hm... Evtl. wäre der letzte Vorschlag von Marco die Lösung, mal gucken...

Nachtrag:
So geht es schonmal...
sDSNADD := 'DSN='+edidsn.text+#0+'Description='+edibeschreibung.text+#0+'Server='+ediip.text+#0;
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 13:37
Hallo Chewie,
Zitat von Chewie:
PChar werden in der Regel durch die Nullterminierung abgeschlossen. Es gibt aber auch Anwendungsfäl´le, z.B. in der WinAPI, wo die Länge mitübergeben wird und deshalb der PChar nullterminiert sein darf. Oder die 0 dient als Trennzeichen und der string wird abgeschlossen durch zwei Nullen.
das wusste ich gar nicht, ich dachte ein pChar ist ein Zeiger auf einen nullterminierten String.
Kannst Du mir ein Beispiel geben zu Deinen obigen Erklärungen?
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 14:13
Genaugenommen ist ein PChar ein Zeiger auf ein Zeichen. In der Regel wandern in C geschriebene API-Funktionen nun solange da durch, bis sie eine 0 finden. Dann gilt für sie der String als beendet.
Es gibt aber auch Fälle, in denen eine 0 durchaus Bestandteil eines Strings sein darf. Beispiel MySQL-API: Dort gibt es für Querys die Funktionen mysql_query und mysql_real_query. Der Unterschied ist folgender: Bei mysql_query wird erwartet, dass der Zeiger auf einen nullterminierten String zeigt, deshalb ist keine Angabe der Größe erforderlich. Bei mysql_real_query dagegen muss die Länge des Strings mitübergeben werden, deshalb darf der String aber auch Nullen enthalten.

Oder bei der WinAPI-Struktur OPENFILENAME: Bei den Filtereinstellungen wird ein Zeiger übergeben, der auf eine Reihe von nullterminierten Strings zeigt. Das Ende wird dadurch gekennzeichnet, dass dort 2 Nullen stehen müssen.


Edit: Jetzt, wo ich mir das oben durchlese, merke ich, dass das etwas undurchsichtig war. Das sollte jetzt klarer sein
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Eigene Daten in PChar übergeben...

  Alt 2. Mär 2004, 14:14
Normalerweise ist PChar ein Pointer auf den Beginn einer Zeichenkette. Wenn Du dann die Zeichenkette abrufst, liest das Programm dann so lange bis es bei #0 ankommt. Das ergibt dann den String. Dann gibt es jedoch Prozeduren wie StrMove. Da ist das Nullbyte uninterressant, da kommt es nur auf die übergebene Länge an.

- So kann man im Speicher ne ganze Menge Murks anstellen - deswegen ist das auch ein "unsicherer Typ"

Ciao

marco

@Chewie - oops da war ich wohl zu langsam beim tippen
Marco Warm
  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 12:01 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