AGB  ·  Datenschutz  ·  Impressum  







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

String-Problem

Ein Thema von seddto1977 · begonnen am 2. Mai 2004 · letzter Beitrag vom 3. Mai 2004
Thema geschlossen
Seite 1 von 2  1 2      
seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#1

String-Problem

  Alt 2. Mai 2004, 12:47
Hallo,

Ich möchte aus einer TextDatei folgende Zeichen in einen String einlesen:


ð*º    `0wÜ “Õ4?q4$

Nach dem Einlesen steht in dem String folgendes:
ð*º'#0#0#0#0#0#0#0#$17#0#0#0#$

Wie kann ich den String wieder so umwandeln das darin auch der Text steht der wirklich in der Datei steht?
 
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: String-Problem

  Alt 2. Mai 2004, 12:57
Ich bin mir ziemlich sicher das in dem String immer noch das steht was auch in der Datei steht. #0 heißt einfach nur Ascii-zeichen 0 - und weil das ein nicht darstellbares zeichen ist wird es dir beim hint etc. in delphi als #0 dargestelt. Word etc. stellen diese zeichen als viereck dar... aber du wirst sehen wenn du es in die datei zurück schreibst das immer noch das gleiche drin steht
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: String-Problem

  Alt 2. Mai 2004, 13:14
Moin Seddto,

wenn ich mir den Inhalt des Strings so anschaue habe ich ernste Zweifel, dass es sich um eine Textdatei handelt.
Ausser bei einer Unicodedatei (oder Multibyte) dürften die nämlich keine binären Nullen enthalten.
Bei Unicode wäre es höchstens jedes zweite.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
 
seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#4

Re: String-Problem

  Alt 2. Mai 2004, 13:21
Doch ist eine von mir erstellte Textdatei...
Jetzt habe ich aber noch folgendes Problem: Ich möchte den String, in den ich die Daten aus der textdatei geladen haben nach Wörtern durchsuchen. Jedes Wort beginnt mit dem Zeichen ':' Dann folgen die Wörter in diesem Format: D E L P H I P R A X I S. Wenn ich jetzt den String durchsuche hat es aber dieses Format: D#0E#0L#0P#0H#0 usw.. am Ende des Strings kommen immer 2 Leerzeichen also #0#0
Wenn ich mir jetzt das zeichen im String für (Pos('D', Stringname) + 1 ausgeben lasse erhalte ich '#0' (in der Watch liste). Wenn ich jetzt aber eine Schleife nach dem Motto Schreibe While(Pos('D', Stringname) + 1 = '#0') ist die Bedingung falsch und die Schleife wird übersprungen Was mache ich falsch?
 
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.134 Beiträge
 
Delphi 12 Athens
 
#5

Re: String-Problem

  Alt 2. Mai 2004, 13:31
Also entweder du entscheidest dich die Datei im Ansi-Format abzuspeichern, oder du muß die Datei in einen WideSting laden (der ist Unicode).

PS: der String von dort oben ist auf jeden Fall nicht aus einer Textdatei (kein ANSI, UTF-8, oder Unicode)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: String-Problem

  Alt 2. Mai 2004, 13:31
Moin Seddto,

Zitat von seddto1977:
Doch ist eine von mir erstellte Textdatei...
.....
Was mache ich falsch?
Ich vermute mal, dass Du die Datei nicht richtig erstellst.

Das sieht nämlich so aus, als würdest Du nicht den String speichern, sondern Pointer.

Beispiel:

Delphi-Quellcode:
var
  fsWork : TFileStream;
  sWork : string;

begin
  sWork := 'Teststring';

  // Der Pointer auf den Inhalt von sWork und das
  // was im Speicher dahintersteht werden gespeichert
  fsWork := TFileStream.Create('c:\temp\test1.txt',fmCreate);
  try
    fsWork.Write(sWork,length(sWork));
  finally
    FreeAndNil(fsWork);
  end;

  // Der String wird gespeichert
  fsWork := TFileStream.Create('c:\temp\test2.txt',fmCreate);
  try
    fsWork.Write(sWork[1],length(sWork));
  finally
    FreeAndNil(fsWork);
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
 
seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#7

Re: String-Problem

  Alt 2. Mai 2004, 13:36
hi Christian
Nein...die Datei ist richtig erstellt und das ist nicht das Problem. Es geht mir darum die in den String eingelesenen Daten so umzuwandeln das ich die Namen wieder rauskriege. By the way...wenn ich die Datei mit dem windows-editor aufmache werden die #0 als Leerzeichen dargestellt. Wenn das geht würde ich das so auch gerne in meinem Delphi-String haben...Weiss jemand wie ich das mache?
 
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: String-Problem

  Alt 2. Mai 2004, 13:39
mit stingreplace sollte es gehen
beim alten zeichen gibst du #0 an und ersetzt das durch ' '
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: String-Problem

  Alt 2. Mai 2004, 13:40
Moin Seddto,

dann hast Du wohl einen WideString geschrieben, und müsstest ihn auch wieder so einlesen.
Allerdings passt das nach wie vor nicht mit Deinem Beispiel aus dem ersten Posting zusammen.

Wie speicherst/liest Du denn, und wie sehen die Deklarationen aus?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
 
seddto1977

Registriert seit: 15. Apr 2004
69 Beiträge
 
#10

Re: String-Problem

  Alt 2. Mai 2004, 13:56
Stringreplace liefert leider dasselbe Ergebnis wie im ersten String (also #0) obwohl ich angegeben habe #0 mit ' ' ersetzen...Weiss echt langsam nicht mehr weiter
 
Thema geschlossen
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 13:02 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