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
Benutzerbild von Helmi
Helmi

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

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

  Alt 17. Nov 2012, 22:06
Hallo,

ich steh gerade auf dem Schlauch.

Ich habe folgende Bedingungen an einen AnsiString:
  1. genau 40 Zeichen lang.
  2. Ab 1. bis 3. Stelle soll der Inhalt eines anderen Strings (S_Linie) eingefügt werden.
  3. 4. Stelle = Leerzeichen
  4. 5. bis 33. Stelle = Inhalt eines zweiten Strings (S_Ziel)
  5. 35. Stelle = Leerzeichen
  6. 36. bis 40. Stelle = Inhalt eines dritten Strings (S_Laenge)

Ich habe es mit Insert probiert, als auch mit Format.
Aber bei Insert wird der Text trotzdem länger (irgendwie auch klar) und bei Format (z. B. mit %.3s als Argument) bekomm ich einen Argumentfehler.

Wie kann ich den String zusammenbauen mit den Randbedingungen?
Ausser jeden String in einer Schleife durchzugehen und Zeichen für Zeichen im End-String zu positionieren
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (17. Nov 2012 um 22:09 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

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

  Alt 17. Nov 2012, 22:19
Gibt es einige Möglichkeiten. Die erste:

Delphi-Quellcode:
var
  a, b, c, x: String;
begin
  x := '1234567890123456789012345678901234567890'; //40Zeichen
  a := 'abc'; //3 Zeichen
  b := 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖ'; //28
  c := 'äöüß#';

  Delete(x, 1, 3);
  Insert(a, x, 1);

  x[4] := ' ';

  Delete(x, 5, 28);
  Insert(b, x, 5);

  x[35] := ' ';

  Delete(x, 36, 5);
  Insert(c, x, 36);

  ShowMessage(x);
  ShowMessage(IntToStr(Length(x)));
end;
Eine andere:
Delphi-Quellcode:
var
  i: Integer;
  a, b, c, x: String;
begin
  x := '1234567890123456789012345678901234567890'; //40Zeichen
  a := 'abc'; //3 Zeichen
  b := 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖ'; //28
  c := 'äöüß#';

  //hier aber vorsicht! zuerst prüfen ob x lang genug ist und nicht überschritten wird

  for i := 1 to Length(a) do
    x[1 - 1 + i] := a[i];

  x[4] := ' ';

  for i := 1 to Length(b) do
    x[5 - 1 + i] := b[i];


  x[35] := ' ';

  for i := 1 to Length(c) do
    x[36 - 1 + i] := c[i];

  ShowMessage(x);
  ShowMessage(IntToStr(Length(x)));
end;

Geändert von Popov (17. Nov 2012 um 22:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

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

  Alt 17. Nov 2012, 22:23
ich vergaß zu erwähnen, dass die einzufügenden Strings nicht unbedingt genau die Länge haben, die für sie definiert sind.
Also der erste String z. B. kann 3 Zeichen, muss aber nicht.

Momentan mach ich es so:
Delphi-Quellcode:
  //auf 40 Zeichen setzen (=max. Länge der Zeile des LCD-Moduls)
  SetLength(S_Text, 40);

  S_Text := StringOfChar(#32, length(S_Text));

  for i := 1 to length(S_Linie) do
    begin
      If i > 3 then
        break;

      S_Text[i] := S_Linie[i];
    end;

  for i := 1 to length(S_Ziel) do
    begin
      If i > 39 then
        break;

      S_Text[i + 4] := S_Ziel[i];
    end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

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

  Alt 17. Nov 2012, 22:26
Also solange es drunter bleibt ist das zweite Beispiel richtig. Wenn es länger werden kann, dann zuerst prüfen.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

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

  Alt 17. Nov 2012, 22:28
Also solange es drunter bleibt ist das zweite Beispiel richtig. Wenn es länger werden kann, dann zuerst prüfen.
So mach ich es jetzt (siehe meinem 2. Post) - nur vielleicht da ja was einfacheres
mfg
Helmi

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

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

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

  Alt 17. Nov 2012, 22:30
Geht auch einfacher:

Delphi-Quellcode:
uses
  System.SysUtils, System.StrUtils;
...
  result := Format('%-3s %-28s %-5s', [LeftStr(a, 3), LeftStr(b, 28), LeftStr(c, 5)]);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

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

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

  Alt 17. Nov 2012, 22:39
Geht auch einfacher:

Delphi-Quellcode:
uses
  System.SysUtils, System.StrUtils;
...
  result := Format('%-3s %-28s %-5s', [LeftStr(a, 3), LeftStr(b, 28), LeftStr(c, 5)]);
So einfach wollt ich es
Wieso hab ich das "-Zahl" nicht in der Doku gefunden?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 01:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz