AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

Ein Thema von Helmi · begonnen am 17. Nov 2012 · letzter Beitrag vom 18. Nov 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 02:52
@himitsu 5. bis 33. Stelle sind 29 Zeichen und nicht 28
36. bis 40. Stelle sind ja auch 5 Zeichen

Somit sind es 39 Zeichen die er beschrieben hat, aber er hat sich mit der 34. Stelle vertan und unter den Tisch fallen lassen
und dann sind es 40
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 03:03
Sag ich ja

Zitat:
3 + 1 + 28 + 1 + 5 = 38
In #1 hatte ich 29 ausgerechnet, aber auch das reicht noch nicht.
Aber hier in den Codes verwenden alle 28 (vermutlich ein Copy&Paste-Error, ausgehend von #2)
Die 29 hatte ich mir auch ausgerrechnet.
Aber dennoch fehlt ein Zeichen (die 34), da er ja 40 Zeichen haben will.

3 + 1 + 29 + 1 + 5 = 39
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Nov 2012 um 03:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#13

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 10:18
result := Format('%-3.3s %-28.28s %-5.5s', [S_Linie, S_Ziel, S_Laenge]);

Für Strings (%s) :
- = Linkbündig
*. = Minimallänge (aufgefüllt mit Leerzeichen)
.* = Maximallänge (mehr wird abgeschnitten)
Danke für die Erklärung - irgendwie ist die Hilfe da nicht so präzise

Aber was soll eigentlich ein Argumentfehler sein?
Ok - das war etwas laienhaft ausgedrückt.



Zitat:
Delphi-Quellcode:
  SetLength(S_Text, 40);
  S_Text := StringOfChar(#32, length(S_Text));
Das ist ein klein bissl sinnlos/doppeltgemoppelt.
  S_Text := StringOfChar(#32, 40);
Ja und Nein! - Ich gib gern Längen nur einmal an. Wenn ich die Länge dann verändere, verändert sich automatisch alles mit.
(Ok - da es hier genau 40 sind, hätte man auch 40 reinschreiben können)

3 + 1 + 28 + 1 + 5 = 38
In #1 hatte ich 29 ausgerechnet, aber auch das reicht noch nicht.
Ich muss gestehen - ich hab mich selbst verhaut - ich bin auch auf weniger Stellen gekommen, als ich wollte.
Habs dann erst bemerkt, als ich den String an ein LCD-Modul gesendet hatte (daher auch die 40 = max. Zeichen pro Zeile)
(Man sollte so spät nicht mehr rechnen)

Ach ja, du kannst deine Variable "Länge" jetzt auch S_Länge nennen.
Das ist mir bekannt - aber ich kann mich damit nicht anfreunden - ich bleib lieber bei ae, ue oder oe

Und wieso sind Linie und Länge eigentlich keine Integer?
"Linie" und "Länge" werden aus einer StringGrid-Zeile gelesen. Daher der String.
Da ich es weiter dann auch als String benötige, wandle ich es nicht unnötigerweise erst in einen Integer.

Auserdem ist Linie keine Zahl - sondern eine Linien-Angabe einer U-Bahn
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 10:48
Passt jetzt zwar nicht zu der Ausgangs Problematik, aber mir sträuben sich gerade alle Nackenhaare bei:
"Linie" und "Länge" werden aus einer StringGrid-Zeile gelesen. Daher der String.
Da ich es weiter dann auch als String benötige, wandle ich es nicht unnötigerweise erst in einen Integer.

Auserdem ist Linie keine Zahl - sondern eine Linien-Angabe einer U-Bahn
Das macht man doch nicht. Hierfür würde sich perfekt das Visitor-Pattern von Uwe Raabe anbieten.

Basierend auf der unit aus diesem Artikel sieht das dann so aus:
Delphi-Quellcode:
uses
  ..., uVisitor;

type
  TSubway = class
    property Line : string;
    property Destination : string;
  end;

  TSubwayArrival = class
    property Subway : TSubway;
    property ArrivalAt : TDateTime;
  end;

  // Der Einfachheit halber wird hier nur in eine Variable geschrieben
  // Es könnte aber auch direkt die Ausgabe an das LCD-Modul erfolgen
  // Oder an eine Klasse, die das LCD-Modul selber betreut :o)
  TLCDVisitor = class( TVisitor )
  private
    FLine : string;
  public
    property Line : string read FLine;
  published
    procedure VisitSubwayArrival( Instance : TSubwayArrival );
  end;

procedure TLCDVisitor.VisitSubwayArrival( Instance : TSubwayArrival );
begin
  FLine := { hier jetzt der Code um die Instanz auszugeben }
end;
und diesen Visitor hat man im 0, auch um weitere Klassen erweitert, um auch diese auf dem LCD darstellen zu können.

Ja und der Aufruf sieht dann immer so aus (egal welche Instanz und welche Klasse auch immer):
MyLCDVisitor.Visit( SomeInstance );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#15

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 10:54
Passt jetzt zwar nicht zu der Ausgangs Problematik, aber mir sträuben sich gerade alle Nackenhaare bei:
Was ist jetzt daran so schlimm?
Ich lese den Inhalt eine Zelle aus, der als String vorliegt und in eine String-Variable geschrieben wird - was ist daran jetzt auf einmal so verwerflich?
Seit wann darf man das nicht mehr?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 11:39
Passt jetzt zwar nicht zu der Ausgangs Problematik, aber mir sträuben sich gerade alle Nackenhaare bei:
Was ist jetzt daran so schlimm?
Ich lese den Inhalt eine Zelle aus, der als String vorliegt und in eine String-Variable geschrieben wird - was ist daran jetzt auf einmal so verwerflich?
Seit wann darf man das nicht mehr?
Seit dem man nicht mehr mit dem Foto des Geldscheins bezahlen darf
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#17

AW: mehrere Strings in einen String vereinen (mit fixer Länge + festen Positionen)

  Alt 18. Nov 2012, 12:27
Für Strings (%s) :
- = Linkbündig
*. = Minimallänge (aufgefüllt mit Leerzeichen)
.* = Maximallänge (mehr wird abgeschnitten)
[/QUOTE]

Stimmt! Damit kann man das auch noch einfacher schreiben und StrUtils weglassen:

result := Format('%-3.3s %-29.29s %-5.5s', [a, b, c]);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 01: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