AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

Ein Thema von eddy · begonnen am 8. Jan 2004 · letzter Beitrag vom 9. Jan 2004
Antwort Antwort
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#1

Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 8. Jan 2004, 10:15
Hallo Leute,

ich habe folgendes Problem:

Der Export einer XLS-Tabelle nach CSV soll eingelesen werden. (Kein Problem) Da die Tabelle aber sehr viele Spalten hat, haben einzelne Zeilen in CSV mehr als 254 Zeichen. Damit fehlt im nachfolgenden Quelltext von diesen Zeilen immer ein Stück.

Code:

var
  txf : TextFile;
begin
  ....
  AssignFile(txf, filename);
  Reset(txf);
  while not eof(txf) do begin
    readln(txf, s);
    // mache etwas sinnvolles mit den Daten
    i := length(s);
    if i > 254 then ShowMessage('Text größer als String'); <-- in diesem Fall gibt's Datenverlust
  end;
  CloseFile(txf);
  ....
end;
Hat jemand eine Lösung für mich?

mfg
eddy
  Mit Zitat antworten Zitat
galex

Registriert seit: 8. Jan 2004
4 Beiträge
 
#2

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 8. Jan 2004, 11:21
Hallo.

Unter Delphi gibt es folgende Stringtypen:

ShortString: bis 255 Byte (Abwärtskompatibilität)
AnsiString: bis 2GB 8 Bit Zeichen
WideString: bis 2GB Unicode Zeichen

Bei {$H+} wird string als AnsiString genohmen,
bei {$H-} als ShortString.

Gruß
Galex
  Mit Zitat antworten Zitat
mark250678

Registriert seit: 31. Okt 2003
Ort: Teublitz
10 Beiträge
 
#3

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 8. Jan 2004, 11:21
Hallo Eddy,

Du kannst mal versuchen s als AnsiString zu deklarieren anstatt als string. Kann das aber momentan leider nicht testen, da ich mit D7 arbeite. Da gibt es diese 255 Zeichenbeschränkung bei Strings nicht mehr.

Unter D5 hatte ich früher mal ein ähnliches Problem.

Schöne Grüße

Markus
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#4

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 8. Jan 2004, 13:28
Hallo mark250678 und galex,

hab's probiert und funktioniert. s statt String als AnsiString definiert und schon klappt's auch mit den langen Zeilen.

WideString wurde mit folgender Beschwerde quitiert: Ungültiger Typ in Read/Readln Anweisung

Vielen Dank, Problem gelöst!

mfg
eddy
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#5

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 9. Jan 2004, 00:18
Hallo Eddy!

Zitat von eddy:
s statt String als AnsiString definiert und schon klappt's auch mit den langen Zeilen.
Offensichtlich hast Du Dein Delphi verstellt - ich habe D5 Standard und da sind Strings normalerweise AnsiString - die alten muß ist als ShortString oder String[anzahl] deklarieren.

Guck mal nach: Projekt - Optionen - Compiler: Ist bei Huge-Strings kein Haken?
Alternativ gibt es noch den Compiler-Schalter $H.

Den einzigen Sinn, den ShortStrings noch haben, ist die Verwendung in typisierten Dateien. Ansonsten verwende ich immer die normalen (Ansi)Strings.

Gruß

Dietmar Brüggendiek

Edit: immer diese TappsFauler
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Rainer_Unger

Registriert seit: 2. Dez 2003
Ort: Heidelberg
17 Beiträge
 
#6

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 9. Jan 2004, 06:45
Hallo,

eine kurze Bemerkung zu "normal":

Unter Pascal ( in der ursprünglichen Definition ) sind String 255 Bytes lang. Alles Andere sind Sonderformate die Borland mit Delphi eingeführt hat.
Bei D5 ist die "Normaleinstellung" nach der Installation die 255 Byte Variante.

Rainer
Ich weiss was ich kann und vor allem auch was ich nicht kann!
Du auch?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 9. Jan 2004, 06:55
Zitat von Rainer_Unger:
Bei D5 ist die "Normaleinstellung" nach der Installation die 255 Byte Variante.
Das halte ich für ein Gerücht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#8

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 9. Jan 2004, 09:59
"Normal" bei Delphi ist (glaube ab Version 2) Ansistring und d.h. > 255.
Natürlich nicht, wenn ein Spielkind über die Einstellungen gegangen ist
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#9

Re: Zeichenkette aus CSV-Datei mit mehr als 254 Zeichen

  Alt 9. Jan 2004, 11:18
Hallo Leute,

nach den vorangehenden Kommentaren noch folgende Ergänzungen:

@Brüggendiek: Haken ist gesetzt (bei Huge)

@alle: ich hab's noch mal mit string probiert und funktioniert auch, in überwachte Ausdrücke wird die Zeichenkette jetzt bis zum Ende angezeigt. Vermutlich hatte ich an einer anderen Stelle einen Fehler, den ich aber nicht mehr nachvollziehen kann.

Vielen Dank für Eure Tipp's

mfg
eddy
  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 09:39 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