AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi An welcher Position war/ist die Variable im Template
Thema durchsuchen
Ansicht
Themen-Optionen

An welcher Position war/ist die Variable im Template

Ein Thema von RWarnecke · begonnen am 25. Jul 2016 · letzter Beitrag vom 26. Jul 2016
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:01
Wäre es denkbar, daß du dir den Counter selbst irgendwie merkst? Das würde sogar eine Änderung des Templates überstehen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#12

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:03
Wäre es denkbar, daß du dir den Counter selbst irgendwie merkst? Das würde sogar eine Änderung des Templates überstehen.
Ja, ich merke mir den Wert des Counters. Aber wie soll mich das weiterbringen, wenn ich das obenstehende Beispiel nehme ? Wenn mein gemerkter Counter auf 11 steht, muss ich den ja nach dem Import auf 2178 setzen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:26
Aus dem Kopf ungetestet ungefähr so: ?
Delphi-Quellcode:
const
  TMP_COUNTER = '%counter%';
  TMP_YEAR = '%year%';

function ExtractCounterFromString(const AString: string; const ATemplate: string): integer;
var
  liPosCounter, liLengthCounter: integer;
  liLengthYear: integer;
  lsResult: string;
begin
  liPosCounter := Pos(TMP_COUNTER, ATemplate);
  liLengthCounter := Length(TMP_COUNTER);
  liLengthYear := Length(TMP_YEAR);
  lsResult := Copy(AString, liPosCounter + liLengthCounter + 1, Length(AString));
  lsResult := Copy(lsResult, 1, Length(lsResult) - liLengthYear);
  Result := StrToIntDef(lsResult, -1);
end;

procedure ImportiereDatensaetze;
var
  liMaxCounter: integer;
begin
  liMaxCounter := -1;
  while EinDatensatzErfolgreichGelesen do begin
    liMaxCounter := max(liMaxCounter, ExtractCounterFromString(GelesenerDatensatz.CounterString);
  end;
  DoWhateverWith(liMaxCounter);
end;
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:31
Ich denke, Du musst das Problem mal zerlegen.

1) Du bekommst folgende Strings
1001030812016 10012530812016 100217830812016 10047930812016
aus einer Datenbank?

2) Du willst den höchsten Counter heraus finden?

3) Es können unterschiedliche Templates benutzt worden sein, also wäre als String auch 1232016 denkbar, wo Counter 23 oder 3 sein kann?

4) Du hast keine Ahnung, welche Template zu Grunde lag und wie das strukturiert war?

5) An den aktuellen Gegebenheit kannst Du nichts umstellen?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:44
Beide Variablen werden mit StringReplace entsprechend bei der Benutzung des Templates ersetzt.
Wie wird denn die Variable mit StringReplace ersetzt? Wenn ich das richtig verstehe "weiß" StringReplace doch irgendwoher das er den Counter mit einem bestimmten Zahlenwert ersetzen soll.
  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: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:48
@ringli

StringReplace( '100%counter%234', '%counter%', '42' ) => '10042234'
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 Sir Rufo
Sir Rufo

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

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 17:54
Man kann so einen String auseinandernehmen, wenn das Template bekannt ist und es nur eine Variable gibt.

Wenn im Template also '%counter%' und '%year%' enthalten sind, dann kann ich jede Kombination aus einem beliebigen Template erkennen, wenn zugleich gewährleistet ist, dass '%year%' immer 4-stellig ist. (Die Platzhalter für counter sollte allerdings nur einmal vorkommen).

Das Template selber muss aber bekannt sein.

Oder anders ausgedrückt, das Template muss für jeden counter-Wert einen eindeutigen Wert liefern, dann kann man es auch zurückrechnen.
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)

Geändert von Sir Rufo (25. Jul 2016 um 17:57 Uhr)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 18:03
StringReplace( '100%counter%234', '%counter%', '42' ) => '10042234'
Genau das meine ich. Um beim Beispiel zu bleiben kommt die 42 ja irgendwoher... Zumindest verstehe ich es so das das bereits funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 18:32
Wäre es denkbar, daß du dir den Counter selbst irgendwie merkst? Das würde sogar eine Änderung des Templates überstehen.
Ja, ich merke mir den Wert des Counters. Aber wie soll mich das weiterbringen, wenn ich das obenstehende Beispiel nehme ? Wenn mein gemerkter Counter auf 11 steht, muss ich den ja nach dem Import auf 2178 setzen.
Wenn beim Import ein Counter von 2178 kommt und du dein gemerkter Counter auf 11 steht, dann merkst du dir offenbar nicht den richtigen Counter - nämlich den mit 2178. Zugegeben, ich weiß nichts über das System. Deswegen die Frage.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: An welcher Position war/ist die Variable im Template

  Alt 25. Jul 2016, 18:45
Ich könnte mir das etwa so vorstellen:
Delphi-Quellcode:
counterValue := '42';
highestValue := 0;
StringReplace('100%counter%234', '%counter%', counterValue);
if IntToStr(counterValue) > highestValue then
  begin
    hightestValue := IntToStr(counterValue);
  end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 05:16 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