AGB  ·  Datenschutz  ·  Impressum  







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

String nach Array of Char

Ein Thema von CalganX · begonnen am 19. Aug 2005 · letzter Beitrag vom 19. Aug 2005
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

String nach Array of Char

  Alt 19. Aug 2005, 17:07
Hi,
ich bin gerade dabei ein Plugin für Miranda zu entwickeln (habe es jetzt endlich geschafft, dass ein PopUp angezeigt wird ). Die API gibt mir jetzt aber in einem Record als Eigenschaft ein array[0..2047] of Char.
Ich dachte eigentlich immer, dass ich darauf einfach einen String zuweisen kann und - tada, Compilermagic - ist alles wunderbar.
Aber das ist leider doch nicht so einfach, wie ich dachte. Kann mir da mal gerade jemand auf die Sprünge helfen? *g*

Chris
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: String nach Array of Char

  Alt 19. Aug 2005, 17:19
mit move kannst du einfach den Stringspeicher auf das Array kopieren. Eventuell geht auch StrCopy
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Chewie

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

Re: String nach Array of Char

  Alt 19. Aug 2005, 17:34
Das Zuweisen geht wohl nur mit einem Array of Char (also lediglich einem Zeiger).
Bei einem statischen Array muss der ganze Speicherblock aber genau 2048 Byte groß sein, da wirst du den Inhalt des Strings wohl manuell in einen Puffer kopieren müssen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: String nach Array of Char

  Alt 19. Aug 2005, 17:43
Hi,
mit StrCopy ging es, danke.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: String nach Array of Char

  Alt 19. Aug 2005, 17:58
Zitat von Chakotay1308:
mit StrCopy ging es, danke.
Obwohl IMHO StrPCopy die richtige Lösung wäre für das Kopieren eine Pascal-Srtings in einen C-String.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: String nach Array of Char

  Alt 19. Aug 2005, 18:05
Hi Rainer,
du hast bedingt Recht. Ich habe gerade nachgeguckt, eigentlich verwende ich sogar die Funktion lstrcpy aus der Unit Windows.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: String nach Array of Char

  Alt 19. Aug 2005, 18:39
Zitat von Chakotay1308:
Ich habe gerade nachgeguckt, eigentlich verwende ich sogar die Funktion lstrcpy aus der Unit Windows.
Aber auch das ist nur eine Funktion die einen C-String in einen anderen kopiert. Wenn Du aber einen Pascal-String in einen C-String kopieren willst, dann verwendest Du StrPCopy. Das P steht eben für Pascal. Diese Prozedur gibt es, weil sich die beiden String-Arten in ihrer internen Darstellung unterscheiden. Das Gegenstück ist übrigens die Funktion StrPas. Wenn Du allerdings von vornherein mit C-Strings (Array of Char, PChar, ...) arbeitest, dann ist StrCopy natürlich die richtige Wahl.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: String nach Array of Char

  Alt 19. Aug 2005, 19:26
Hi,
also irgendwie ist das doch noch nicht das Wahre.
So sieht's im Moment aus:
Delphi-Quellcode:
  stemp := Format('Now playing: %s - %s', [sArtist, sTrack]);
  ppd.lpszText := StrPCopy(@(ppd.lpszText), stemp);
Doch da gibts den Fehler
Fehlermeldung:
[Fehler] iTunesNotify.dpr(85): E2010 Inkompatible Typen: 'Array' und 'PAnsiChar'

Das Schlimme ist, dass es vorhin irgendwie mal funktioniert hat.

@Rainer: okay, dann war lstrcpy die falsche Wahl, weil ich ja (s.o.) eindeutig einen Delphi-String in ein Array bekommen will.

Da das Array jedoch statisch ist, befürchte ich, dass mir nichts anderes übrig bleibt, als das, was Martin vorgeschlagen hat. Sehe ich das richtig?

Chris
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: String nach Array of Char

  Alt 19. Aug 2005, 19:47
es ist schon ein unterschied ob du asu einem array of char nen string machen willst oder aus einem string en narray of char

du vermischt ja bei dir beides

Delphi-Quellcode:
var s: String;
a: array[0..1213] of char;

begin
  SetLength(s,sizeof(a));
  copymemory(@s[1],@a[low(a)],sizeof(a));

  // array nach string

  copymemory(@a[low(a)],@s[1],sizeof(a));
  // von string nach array

end;
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: String nach Array of Char

  Alt 19. Aug 2005, 20:09
Hi,
juchu.
Das scheint jetzt zu funktionieren, danke dir!

Chris
  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:24 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