Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2026
alejandro.laord alejandro.laord is offline
Registrado
 
Registrado: jul 2019
Posts: 2
Poder: 0
alejandro.laord Va por buen camino
duda basica. linq con spring4d

Alguien sabe cómo hacer select, map o equivalente en spring4d, sé que haciendo un for.. in.. lo haría.
Estoy haciendo pruebas y no consigo dar con el tema.
Adjunto ejemplo:

Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, Spring, Spring.Collections;

type
  TProduct = class
  public
    Name: string;
    Category: string;
    Price: Double;
    InStock: Integer;
    constructor Create(const AName, ACategory: string; APrice: Double;
      AInStock: Integer);
  end;

constructor TProduct.Create(const AName, ACategory: string; APrice: Double;
  AInStock: Integer);
begin
  Name := AName;
  Category := ACategory;
  Price := APrice;
  InStock := AInStock;
end;

var
  Products: IList;
  Nombres: IEnumerable<string>;

begin
  try
    Products := TCollections.CreateObjectList(True);
    Products.AddRange([TProduct.Create('artilugio', 'cacharro', 192.43, 3),
      TProduct.Create('cacharro', 'electrónica', 13.65, 10),
      TProduct.Create('pongo', 'cacharro', 52.22, 0), TProduct.Create('cosa',
      'electrónica', 11.33, 5), TProduct.Create('trasto', 'cacharro',
      43.44, 1)]);
    Writeln('Buscando nombres de electronica...');
    // Usando Map en lugar de select
    Nombres := Products.Where(
      function(const p: TProduct): Boolean
      begin
        Result := p.Category = 'electrónica';
      end).Map<string>(
      function(const p: TProduct): string
      begin
        Result := p.Name;
      end);
    for var s in Nombres do
      Writeln('Producto: ' + s);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;

end.

Última edición por Neftali [Germán.Estévez] fecha: 15-01-2026 a las 15:05:30. Razón: Añadir TAGs al código
Responder Con Cita
  #2  
Antiguo 14-01-2026
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  Spring,
  Spring.Collections;

type
  TProduct = class
  public
    Name: string;
    Category: string;
    Price: Double;
    InStock: Integer;
    
    constructor Create(const AName, ACategory: string; APrice: Double; AInStock: Integer);
  end;

constructor TProduct.Create(const AName, ACategory: string; APrice: Double; AInStock: Integer);
begin
  Name := AName;
  Category := ACategory;
  Price := APrice;
  InStock := AInStock;
end;

var
  Products: IList;
  Nombres: IEnumerable<string>;

begin
  try
    Products := TCollections.CreateObjectList(True);
    
    Products.AddRange([
      TProduct.Create('artilugio', 'cacharro', 192.43, 3),
      TProduct.Create('cacharro', 'electrónica', 13.65, 10),
      TProduct.Create('pongo', 'cacharro', 52.22, 0),
      TProduct.Create('cosa', 'electrónica', 11.33, 5),
      TProduct.Create('trasto', 'cacharro', 43.44, 1)
    ]);

    Writeln('Buscando nombres de electronica...');
    
    // Usando Map en lugar de Select
    Nombres := Products
      .Where(function(const p: TProduct): Boolean
        begin
          Result := p.Category = 'electrónica';
        end)
      .Map<string>(function(const p: TProduct): string
        begin
          Result := p.Name;
        end);

    for var s in Nombres do
      Writeln('Producto: ' + s);
      
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  
  Readln;
end.
Responder Con Cita
  #3  
Antiguo 14-01-2026
alejandro.laord alejandro.laord is offline
Registrado
 
Registrado: jul 2019
Posts: 2
Poder: 0
alejandro.laord Va por buen camino
Funciona

Gracias, he conseguido hacer una versión que sí funciona con select.


Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils,
  Spring.Collections,
  Spring;

type
  TProduct = class
  public
    Name: string;
    Category: string;
    Price: Double;
    InStock: Integer;
    constructor Create(const AName, ACategory: string; APrice: Double; AInStock: Integer);
  end;

{ TProduct }
constructor TProduct.Create(const AName, ACategory: string; APrice: Double;
  AInStock: Integer);
begin
  Name := AName;
  Category := ACategory;
  Price := APrice;
  InStock := AInStock;
end;

procedure ver(Lista : IEnumerable);
begin
  for var pProd in Lista  do
  begin
    Writeln('-----------------');
    writeln('Nombre producto: ' + pProd.Name);
    writeln('Categoría producto: ' + pprod.Category);
    Writeln('Precio producto: ' + CurrToStr(pprod.price));
    Writeln('Stock producto: ' + IntToStr(pProd.InStock));
    Writeln('-----------------');
  end;
  Readln;
end;

var
  Products : IList;

begin
  try
    //Writeln();
    Products := TCollections.CreateObjectList(true);
    (*Cargar los datos*)
    Products.AddRange([
      TProduct.Create('artilugio', 'cacharro', 192.43, 3),
      TProduct.Create('cacharro', 'electrónica', 13.65, 10),
      TProduct.Create('pongo', 'cacharro', 52.22, 0),
      TProduct.Create('cosa', 'electrónica', 11.33, 5),
      TProduct.Create('trasto', 'cacharro', 43.44, 1)
    ]);
    Writeln('PRODUCTOS EN ALMACÉN');
    ver(Products);
    (*Filtrar: Productos con precio superior a 50.00*)
    Writeln('PRODUCTOS CAROS (precio > 50)');
    var Caros := (Products.Where(
      function (const P:TProduct):boolean
      begin
        Result := (P.Price > 50);
      end));
    ver(Caros);
    (*Proyectar: Lista con nombres de productos de categoría "Electrónica"*)
    Writeln('NOMBRES DE PRODUCTOS DE ELECTRÓNICA:');
    Writeln('------------------------------------');
    var Nombres := Products
        .Where(function(const P: TProduct): Boolean
               begin
                 Result := P.Category = 'electrónica';
               end);
    Nombres.ForEach(procedure(const n:TProduct)
    begin
      Writeln('• ' + n.Name);
    end);
    Writeln('Total productos de electrónica: ' + Nombres.Count.ToString);
    Readln;
    (*Ejercicio 3. Sumar todos los stocks y dar la cifra de inventario*)
    var cTotal := TEnumerable.Select(
      Products,
      function(const P: TProduct): currency
      begin
        Result := p.Price * p.InStock;
      end).Sum; // Luego sumamos todos esos subtotales
    Writeln('Total valoración de stock: ' + CurrToStr(cTotal));
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Por qué Spring4D no es incorporado nativamente? jhonny Varios 14 30-01-2017 22:26:15
duda basica con archivo danielmj Varios 2 04-06-2012 22:11:23
Linq to SQL rruz Noticias 1 28-04-2008 10:27:16
Duda sobre DBEdit basica jrperico2006 Conexión con bases de datos 2 21-07-2006 22:05:41
duda basica. con un variable tipo imagen Jorghino reyes Varios 2 10-09-2005 19:30:41


La franja horaria es GMT +2. Ahora son las 03:29:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi