AGB  ·  Datenschutz  ·  Impressum  







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

String nach array[0..1024] of Char

Ein Thema von faux · begonnen am 25. Mai 2006 · letzter Beitrag vom 26. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:07
Hallo!

Ich habe folgendes Problem:
Ich will einen String in einen Array[0..1024] of Char bekommen.
Ich habe folgendes Probiert:

Delphi-Quellcode:
var
  MyArray: array[0..1024] of Char;
  Temp: string;
begin
  CopyMemory(@MyArray, @Temp[1], Length(Temp));
end;
Jedoch bekomme ich dann anstatt von C:\ftp immer C:\ftpæx€????. Also den String mit etwas Datenmüll hintendran.
Woran liegt das? Ist meine Kopiermöglichkeit so überhaupt richtig?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:10
Da fehlt warscheinlich das nullzeichen am ende des Strings. Du liest einfach noch den ganzen Müll der noch im Speicher stand mit aus (bis zum Ende oder zum nächsten nullzeichen).

Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:14
mach einfach
CopyMemory(@MyArray, @Temp[1], Length(Temp) + 1); bzw.
Delphi-Quellcode:
CopyMemory(@MyArray, @Temp[1], Length(Temp));
MyArray[Length(Temp)] := #0;
bzw.
Delphi-Quellcode:
ZerorMemory(@MyArray, SizeOf(MyArray));
CopyMemory(@MyArray, @Temp[1], Length(Temp) + 1);
Es fehlt also nur die Abschließende #0
Aber darüber brauchst du dir eigentliche keine Gedanken machen wenn das Array bereits mit #0 gefüllt ist (also mit #0 initialisiert wurde).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:14
Zitat von Ratte:
Da fehlt warscheinlich das nullzeichen am ende des Strings. Du liest einfach noch den ganzen Müll der noch im Speicher stand mit aus (bis zum Ende oder zum nächsten nullzeichen).
Ja aber ich gebe CopyMemory doch die Länge des Strings. Ich schätze mal, dass diese Funktion einfach von 0 bis zur Längenangabe beide Pointer einfach erhöt und Byteweise die Daten kopiert.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:15
Zitat von SirThornberry:
mach einfach
[delphi]
CopyMemory(@MyArray, @Temp[1], Length(Temp) + 1);
Kay! Klar! Ich habe immer -1 geschrieben, weil ich dachte, dass da zu viel kopiert wird.

Danke!

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:16
eigentlich kannst du das auch weglassen weil der Record der dir dort mit den Array übergeben wird bereits mit #0 initialisiert ist. (in deinem TestProgramm musst du es natürlich selbst machen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:31
Noch 'ne Möglichkeit:

StrPCopy(MyArray, Temp); Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:33
Zitat von Hawkeye219:
Noch 'ne Möglichkeit:

StrPCopy(MyArray, Temp);
Wieso nicht gleich so?
Hat das irgendwelche Nachteile gegenüber meinem Versuch?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: String nach array[0..1024] of Char

  Alt 25. Mai 2006, 19:46
Ich sehe einen Vorteil: es funktioniert zuverlässig mit Leerstrings. Ich habe nicht ausprobiert, wie sich deine Routine in diesem Fall verhält.

Die Funktion gibt es übrigens auch mit Längenbeschränkung: Delphi-Referenz durchsuchenStrPLCopy.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#10

Re: String nach array[0..1024] of Char

  Alt 26. Mai 2006, 09:10
Es gibt ja auch die Windowsfunktionen:

Delphi-Quellcode:
var
  MyArray: array[0..1024] of Char;
  Temp: string;
begin
  Temp := 'Hallo';

  {Windows.}lstrcpy(MyArray, @Temp[1]);

  Showmessage(MyArray);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:53 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