AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Teile von "array of char" in "String" kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Teile von "array of char" in "String" kopieren

Ein Thema von Bubblegum · begonnen am 4. Okt 2007 · letzter Beitrag vom 4. Okt 2007
Antwort Antwort
Seite 2 von 2     12   
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: Teile von "array of char" in "String&

  Alt 4. Okt 2007, 13:30
Zitat von Bubblegum:
Das kann ich nicht kompilieren -> inkompatible Typen
Siehe korrigierten Beitrag #7.
Andreas
  Mit Zitat antworten Zitat
sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Teile von "array of char" in "String&

  Alt 4. Okt 2007, 13:50
Ich gehe mal davon aus, dass du einen Bereich im Array kopieren willst.
Also nicht nur von Null bis zu einer bestimmten Zahl, sondern auch von
Vier auf eine bestimmte Zahl. Mit CopyMemory kannst du Chars kopieren.
Durch den letzten Parameter kannst du bestimmen, wie viele Buchstaben du
kopieren willst. Den Startpunkt kannst du ermitteln, indem du die Startadresse
mit der gewünschten Startzahl addierst. Beispiel:

Delphi-Quellcode:
procedure CopyArrayPart(lpszDest: PString; lpszSource: Pointer; dwStart, dwLength: DWord);
var
  lpszStringToPChar: PChar;
begin
  Dec(dwStart); //dwStart verringern, damit man nicht bei Null anfangen muss (Char Start bei Pascal Strings ist ja bei Eins und nicht bei Null, wie es bei nullterminierenden Strings der Fall ist).
  GetMem(lpszStringToPChar, dwStart + dwLength); //Speicher für ein PChar allozieren (so groß, dass man die gewünschten Buchstaben speichern kann)
  CopyMemory(lpszStringToPChar, Pointer(Cardinal(lpszSource) + dwStart), dwLength); //Die angegebene Anzahl der Buchstaben von der Startaddresse + ItemIndex kopieren
  lpszDest^ := strpas(lpszStringToPChar); //PChar in den String kopieren
  FreeMem(lpszStringToPChar, dwStart + dwLength); //PChars Speicher leeren
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  lol: array[0..27-1] of Char;
  kaka: String;
  g: Byte;
begin
  //Das Char Array mit dem ABC LowerCase füllen
  for g := 0 to 27-2 do
    lol[g] := chr(g+97);

  kaka := ''; //Leerer String

  CopyArrayPart(@kaka, @lol, 3, 5); //Ab dem dritten(eigentlich viertem) Buchstaben anfangen und von da an fünf Buchstaben kopieren

  ShowMessage(kaka);

  exitprocess(0);
end;
Habe das gerade aus dem Kopf geschrieben. Ist sicherlich verbesserungsbedürftig.^^
Ob es jetzt schön schnell ist, weiß ich nicht. Ich finde es aber nicht so umständlich,
als wenn man eine For-Schleife benutzt.

Mfg: sk0r
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Teile von "array of char" in "String&

  Alt 4. Okt 2007, 14:34
Hallo Andreas,

Zitat von shmia:
... das funktioniert zwar, ist aber nicht resourcensparend. ...
ich weiß, es ist auch nicht sehr schnell - ich kenne die Interna. Hätte ich deinen Beitrag gesehen, dann wäre mir klar gewesen, dass es um Geschwindigkeit geht. Der Ansatz mit Copy() hat nur den einen Vorteil: Er operiert auf der höchsten Abstraktionsstufe.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:06 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