Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String mit Leerzeichen auf definierte Länge füllen (https://www.delphipraxis.net/100812-string-mit-leerzeichen-auf-definierte-laenge-fuellen.html)

WIng2005 4. Okt 2007 10:02


String mit Leerzeichen auf definierte Länge füllen
 
Hallo,

gibt es eine "format-ähnliche" Anweisung mit der ich die länge eines String durch Leerzeichen bestimmen kann?
Hintergrund ist folgender:
Ich habe ein StringGrid und möchte einige Spalten in eine Textdatei speichern.
Damit diese dann tabellenartig aufgebaut ist, müssen alle Elemente einer Spalte die gleiche Länge haben.
Habe bisher ne wilde Schleifenkonstruktion, die nicht ganz arbeiten will.
Arbeite erstmal daran weiter, wäre aber echt dankbar, wenns ne elegantere Lösung gäbe.


MFG
Steffen

Gollum 4. Okt 2007 10:05

Re: String mit Leerzeichen auf definierte Länge füllen
 
Hallo,

DupeString aus der unit StrUtils macht das gewünschte.

Lannes 4. Okt 2007 10:09

Re: String mit Leerzeichen auf definierte Länge füllen
 
Hallo,

oder was formatähnliches :arrow: Format

Delphi-Quellcode:
Format('%42s',['Delphi']);
//oder
Format('%-42s',['Delphi']);

WIng2005 4. Okt 2007 10:32

Re: String mit Leerzeichen auf definierte Länge füllen
 
Format.... :wall:

Danke...

MFG
Steffen

RavenIV 4. Okt 2007 10:36

Re: String mit Leerzeichen auf definierte Länge füllen
 
Zitat:

Zitat von Gollum
Hallo,

DupeString aus der unit StrUtils macht das gewünschte.

Das ist wohl nicht ganz das Gesuchte.
Zitat:

Zitat von Delphi7-Hilfe
Die Funktion gibt die mehrfache Verkettung eines Strings mit sich selbst zurück. Die Anzahl der Wiederholungen kann angegeben werden.

Unit

StrUtils

Kategorie

String-Verarbeitung

Delphi-Syntax:

function DupeString(const AText: string; ACount: Integer): string;

C++ Syntax:

extern PACKAGE AnsiString __fastcall DupeString(const AnsiString AText, int ACount);

Beschreibung

DupeString gibt einen String zurück, der ACount Wiederholungen des Strings AText enthält. Ein Beispiel:

S := DupeString('Ha', 5);

Diese Anweisung gibt den String 'HaHaHaHaHa' zurück.


WIng2005 4. Okt 2007 11:05

Re: String mit Leerzeichen auf definierte Länge füllen
 
Könnte man :
Delphi-Quellcode:
s:=Format('%3s',[Grid1.Cells[0,zeile]])
dynamischer gestalten?
Habe versucht, die Formatierungsangabe durch einen String zu ersetzen...mag er nicht.
Idealerweise so:

Delphi-Quellcode:

feld[1]:='3';

s:=Format('%'+feld[1]+'s',[sg1.Cells[0,zeile]]);
Wie gesagt...,mag er nicht -> inkopatible Typen...Ordinalty erforderlich.

MFG
Steffen

Klaus01 4. Okt 2007 11:07

Re: String mit Leerzeichen auf definierte Länge füllen
 
Zitat:

Zitat von WIng2005
Delphi-Quellcode:

feld[1]:='3';

s:=Format('%'+StrToInt(feld[1])+'s',[sg1.Cells[0,zeile]]);
Wie gesagt...,mag er nicht -> inkopatible Typen...Ordinalty erforderlich.

MFG
Steffen

Vielleicht so, siehe oben.

Grüße
Klaus

WIng2005 4. Okt 2007 11:14

Re: String mit Leerzeichen auf definierte Länge füllen
 
hatte strtoint statt inttostr.... mein Fehler.

MFG

Steffen

Reinhard Kern 4. Okt 2007 11:30

Re: String mit Leerzeichen auf definierte Länge füllen
 
Zitat:

Zitat von WIng2005
Hallo,

gibt es eine "format-ähnliche" Anweisung mit der ich die länge eines String durch Leerzeichen bestimmen kann?
Hintergrund ist folgender:
Ich habe ein StringGrid und möchte einige Spalten in eine Textdatei speichern.
Damit diese dann tabellenartig aufgebaut ist, müssen alle Elemente einer Spalte die gleiche Länge haben.
Habe bisher ne wilde Schleifenkonstruktion, die nicht ganz arbeiten will.
Arbeite erstmal daran weiter, wäre aber echt dankbar, wenns ne elegantere Lösung gäbe.


MFG
Steffen

Delphi-Quellcode:
while length (mystring) < newlength do insert (' ',mystring,length(mystring+1));
Gruss Reinhard

marabu 4. Okt 2007 11:33

Re: String mit Leerzeichen auf definierte Länge füllen
 
Hallo,

kleiner Tipp noch:

Delphi-Quellcode:
var
  FeldBreite: array of Integer;
  iSpalte, iZeile: Integer;
begin
  // ...
  s := Format('%*s', [FeldBreite[iSpalte], Grid.Cells[iSpalte, iZeile]]);
  // ...
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.
Seite 1 von 2  1 2      

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